Serializers trong Django REST Framework chịu trách nhiệm chuyển đổi các đối tượng thành các kiểu dữ liệu có thể hiểu được. Serializers cũng cung cấp tính năng deserialization, cho phép dữ liệu đã phân tích cú pháp được chuyển đổi trở lại thành các loại phức tạp, sau khi xác thực dữ liệu đến lần đầu.
Sau đây, mình sẽ hướng dẫn các bạn tạo và sử dụng Serializers trong Django REST Framework:
Tạo một Serializer cơ bản
Để tạo một Serializer cơ bản, ta cần import serializers class từ rest_framework và xác định các trường cho serializer.
from rest_framework import serializers
class CommentSerializer(serializers.Serializer):
email = serializers.EmailField()
content = serializers.CharField(max_length = 200)
created = serializers.DateTimeField()
ModelSerializer
Class ModelSerializer cung cấp một lối tắt cho phép bạn tự động tạo lớp Serializer với các trường tương ứng với các trường Model.
Class ModelSerializer giống như class Serializer thông thường, ngoại ra:
- Nó sẽ tự động tạo các trường cho bạn, dựa trên model.
- Nó sẽ tự động tạo các validators cho Serializer.
- Nó mặc định triển khai các create() và update().
Ta có ví dụ sau:
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = Account
fields = ['id', 'account_name', 'users', 'created']
HyperlinkedModelSerializer
Class HyperlinkedModelSerializer tương tự như class ModelSerializer, ngoại trừ việc nó sử dụng các hyperlinks để đại diện cho các relationships, thay vì các primary keys.
Ta có ví dụ đơn giản như sau:
class AccountSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Account
fields = ['id', 'account_name', 'users', 'created']
Serializer Fields
Tên trường | Mô tả |
---|---|
BooleanField | Trường boolean sử dụng và chấp nhận các giá trị True hoặc False. |
NullBooleanField | Trường boolean chấp nhận các giá trị True, False và Null. |
CharField | CharField được sử dụng chứa các dữ liệu dưới dạng text. |
EmailField | EmailField cũng chỉ chấp nhận dữ liệu dạng text và nó xác thực text đó là một địa chỉ e-mail hợp lệ. |
RegexField | Như tên đã định nghĩa, RegexField khớp chuỗi với một regex cụ thể, nếu không sẽ tạo ra lỗi. |
URLField | URLField về cơ bản là một RegexField xác thực đầu vào dựa trên mẫu đối sánh URL. |
SlugField | SlugField là một RegexField xác thực đầu vào theo mẫu [a-zA-Z0-9 _-] +. |
IPAddressField | IPAddressField là trường đảm bảo đầu vào là chuỗi IPv4 hoặc IPv6 hợp lệ. |
IntegerField | IntegerField về cơ bản là một trường số nguyên. |
FloatField | FloatField về cơ bản là một trường float xác thực đầu vào. |
DecimalField | DecimalField là một trường thập phân. |
DateTimeField | DateTimeField là một trường serializer được sử dụng để biểu diễn ngày và giờ. |
DateField | DateField là một trường serializer được sử dụng để biểu diễn ngày tháng. |
TimeField | TimeField là một trường serializer được sử dụng để biểu diễn thời gian. |
DurationField | DurationField là một trường serializer được sử dụng để biểu diễn thời lượng. |
ChoiceField | ChoiceField về cơ bản là một CharField xác thực đầu vào dựa trên một giá trị trong một tập hợp giới hạn các lựa chọn. |
MultipleChoiceField | MultipleChoiceField về cơ bản là một CharField xác thực đầu vào dựa trên một tập hợp không, một hoặc nhiều giá trị, được chọn từ một tập hợp các lựa chọn hạn chế. |
FileField | FileField về cơ bản là một biểu diễn tệp. Nó thực hiện xác thực FileField tiêu chuẩn của Django. |
ImageField | ImageField biểu diễn hình ảnh, nó xác thực nội dung tệp được tải lên có khớp với một định dạng hình ảnh. |
ListField | ListField về cơ bản là một trường danh sách xác thực đầu vào dựa trên danh sách các đối tượng. |
JSONField | JSONField về cơ bản là một lớp trường xác nhận rằng cấu trúc dữ liệu đến bao gồm các JSON hợp lệ. |
HiddenField | HiddenField là một lớp trường không nhận giá trị dựa trên đầu vào của người dùng, mà thay vào đó lấy giá trị của nó từ giá trị mặc định hoặc có thể gọi. |
DictField | DictField về cơ bản là một trường từ điển xác thực đầu vào là dictionary của các đối tượng. |
Các tham số cơ bản trong serializer fields
Các Serializer field trong Django yêu cầu các arguments nhất định để thao tác behaviour các trường đó.
Argument | Mô tả |
---|---|
read_only | Đặt giá trị này thành True để đảm bảo rằng các field không được tạo mới hoặc cập nhật một instance trong quá trình deserialization. |
write_only | Đặt giá trị này thành True để đảm bảo rằng các field có thể cập nhật hoặc tạo một instance, nhưng không được đưa vào khi serializing một representation. |
required | Đặt giá trị này thành False cũng cho phép bỏ qua thuộc tính đối tượng hoặc dictionary key khỏi đầu ra khi serializing một instance. |
default | Nếu được đặt, điều này sẽ cung cấp giá trị mặc định sẽ được sử dụng cho trường nếu không có giá trị đầu vào. |
allow_null | Đặt giá trị thành True nếu ta cho phép giá trị được null. |
source | Tên của thuộc tính sẽ được sử dụng để populate trường. |
validators | Danh sách các function validator sẽ được áp dụng cho đầu vào. |
error_messages | Một dictionary về error codes và error messages. |
label | Một chuỗi ngắn có thể được sử dụng làm tên của trường. |
help_text | Chuỗi văn bản có thể được sử dụng làm mô tả trường. |
Casino Site Review (2021) | Lucky Club
Trả lờiXóaLucky Club is a new and reliable online casino. The site offers players real money bonuses, games, sports and live casino games. 카지노사이트luckclub The Minimum Deposit: $0.20Games: 550+Withdrawals: Bank Transfer, Skrill,