DRF 序列化之自定義校驗規則

2022-07-07 12:51:10 字數 1033 閱讀 3367

views.py:

# 自定義規則

class testvalidator(object):

def __init__(self, base):

self.base = base

def __call__(self, value):

# 規則明細

if not value.startswith(self.base):

message = "內容必須以 %s 為開頭" % self.base

raise serializers.validationerror(message)

def set_context(self, serializer_field):

"""this hook is called by the serializer instance,

prior to the validation call being made.

"""# 執行驗證之前呼叫,serializer_fields 是當前字段物件

pass

class usergroupserializer(serializers.serializer):

title = serializers.charfield(

error_messages=,

validators=[testvalidator("aaaaa"),], # 設定規則

)class usergroupview(apiview):

def post(self, request, *args, **kwargs):

ser = usergroupserializer(data=request.data)

if ser.is_valid(): # 如果 ser 有資料

print(ser.validated_data["title"])

else:

print(ser.errors) # 如果沒資料,則列印錯誤資訊

提交不合規定的資料:

DRF 序列化自定義字段

models.py from django.db import models class usergroup models.model title models.charfield max length 32 class userinfo models.model user type choices...

可序列化和自定義序列化

序列化技術的主要兩個目的是 持久化儲存 按值封送。net framework支援三種序列化器 binary xml soap.他們各有優缺點,分別列如下 1.binary序列化是完全保真的,因為除非特殊宣告為nonserialized,那麼所有成員 包括私有的和公有的 都會被序列化。該序列化器的結果...

Serializable 自定義序列化

序列化物件可以自定義序列化,也可以使用預設序列化 如何選擇呢?這就要從序列化的目的說起,序列化的目的簡單來說就是儲存,之後可以還原,這就是說只要我們能達到這個目的,都是ok的。如果都ok那麼就可以選擇更ok的形式。看下面這個例子 oddnum 這是乙個極其沒有道理的例子,只是為了說明問題 publi...