© 2020, Developed by Hieu Dev

Tìm hiểu về Serializers – Django REST Framework

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.

Tìm hiểu về Serializers – Django REST Framework

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()


Bằng cách này, người ta có thể khai báo serializer cho bất kỳ thực thể hoặc đối tượng cụ thể nào dựa trên các trường bắt buộc. Serializers có thể được sử dụng để serialize cũng như deserialize dữ liệu.

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.

1 Nhận xét

  1. Casino Site Review (2021) | Lucky Club
    Lucky 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,

    Trả lờiXóa
Mới hơn Cũ hơn