XBlock Fields
Sau các bước tạo CounterXBlock, ở trong tập tin counter.py, chúng ta tiến hành tạo một trường dữ liệu(sau đây gọi là field) với tên gọi là count.
count = Integer(
default=0,
scope=Scope.user_state,
help="A simple counter, to show something happening")
Có thể truy cập giá trị count để hiện thị ra UI trong tập tin counter.html ở thư mục static
<div id="counter-value">{self.count}</div>
Các trường dữ liệu là những thuộc tính của XBlock để lưu trữ và truy xuất dữ liệu.
Khi khởi tạo một trường XBlock, cần xác định ba tham số quan trọng
Tham số | Mô tả |
---|---|
help | Để mô tả field |
default | Xác định giá trị khởi tạo của field |
scope | Xác định phạm vi field |
User Scope
User Scope là phạm vi truy cập của người dùng.
Một field có thể có các scope sau:
Phạm vi | Mô tả | Ví dụ |
---|---|---|
No user | Field có thể không phụ thuộc vào bất kì user nào | Field count đếm số lượng học viên hiện đang truy cập trang web (mọi người đều nhìn thấy và không một ai có thể sửa được) |
One user | Field dành riêng cho một người dùng cụ thể. | Một field id thì chỉ có một user có |
All users | Field chứa dữ liệu chung cho tất cả người dùng. | Tổng số học viên trả lời một câu hỏi là như nhau đối với tất cả người dùng. |
XBlock Scope
XBlock Scope là phạm vi truy cập của XBlock.
Hiểu được phạm vi của XBlock, giúp lập trình viên có thể bảo vệ dữ liệu nhạy cảm, cũng như tái sử dụng hoặc chia sẻ các XBlock với nhau.
Field có thể tương tác XBlock qua bốn kiểu phạm vi:
Phạm vi | Mô tả | Ví dụ |
---|---|---|
Block usage | Field thuộc về một thực thể khi sử dụng XBlock trong một khóa học cụ thể. Trong hầu hết các trường hợp, nên sử dụng phạm vi này. | Nếu người sử dụng tạo XBlock thăm dò ý kiến, các tùy chọn câu hỏi và câu trả lời của cuộc thăm dò ý kiến sẽ cụ thể theo cách sử dụng, vì có thể có các cuộc thăm dò khác nhau trong các phần khác nhau của khóa học |
Block definition | Field được định nghĩa một lần khi XBlock được khởi tạo. Có thể chia sẻ qua các khóa học và được tái sử dụng nhiều lần. | Người sử dụng có thể tạo XBlock cho trình phát video và đặt các tùy chọn mặc định như: tự động phát, phụ đề, v.v. trong định nghĩa. Những tùy chọn mặc định có thể áp dụng cho tất cả các phiên bản của trình phát video. |
Block type | Là kiểu dữ liệu Python của field (ví dụ: Integer, String, ...) | Nhà phát triển có thể có một field lưu trữ tên tác giả cho một loại XBlock cụ thể. |
All | Khi field có phạm vi kiểu All, mọi XBlock đều có thể truy cập và sử dụng dữ liệu. | Nhà phát triển có thể tạo XBlock để hiển thị thời gian hiện tại. Khi mỗi phiên bản của XBlock được tải, field current_datetime sẽ được chia sẻ và hiển thị giá trị. |
Ghi chú
Khi sử dụng phạm vi kiểu All, có khả năng xảy ra xung đột giữa các field với nhau: trùng tên, rối loạn kiểu dữ liệu, …
Mối liên hệ giữa phạm vi người dùng và phạm vi XBlock:
UserScope.NONE |
UserScope.ONE |
UserScope.ALL |
|
---|---|---|---|
BlockScope.DEFINITION |
Scope.content |
||
BlockScope.USAGE |
Scope.settings |
Scope.user_state |
Scope.user_summary |
BlockScope.TYPE |
Scope.preferences |
||
BlockScope.ALL |
Scope.user_info |
Fields and Data Storage
Mối quan hệ Field and Data Storage: các field được ghi và truy xuất dưới dạng các thực thể (instance) đơn lẻ, nên không thể lưu trữ một lượng lớn dữ liệu trong cùng một field. Do đó, ta nên chia nhỏ dữ liệu thành nhiều field nhỏ hơn để lưu trữ.
Ví dụ: nếu ta có một XBlock lưu trữ thông tin về học viên bao gồm tên, địa chỉ, và số điện thoại, thay vì lưu trữ tất cả thông tin trong một field, ta có thể chia thành các field nhỏ hơn như name, address và phone_number. Điều này giúp chúng ta quản lý dữ liệu một cách dễ dàng và tiết kiệm không gian lưu trữ.
Field and OLX
Các field của XBlock tương ứng với các thuộc tính trong định nghĩa OLX (open learning XML).
Ví dụ: chúng ta có thể cấu hình field count trong XBlock CounterXBlock như trong đoạn code sau đây:
class CounterXBlock(XBlock):
count = Integer(
default=0, scope=Scope.user_state,
help="A simple counter, to show something happening",
)
Mặc định, XBlock CounterXBlock được đại diện trong OLX như ví dụ sau đây:
<counter count = 0/>
Chúng ta có thể tùy chỉnh cách XBlock được biểu diễn trong OLX bằng cách sử dụng các phương thức xblock.parse_xml() và xblock.add_xml_to_node().
Kết luận
Các field trong XBlock đóng vai trò quan trọng trong việc quản lý trạng thái, thuộc tính và dữ liệu liên quan đến một XBlock. Field cung cấp cho người sử dụng một cách linh hoạt và có cấu trúc để lưu trữ và truy cập dữ liệu.