django rest frameworkは、検証後にどのような変換を行いますか?可能であれば文字列をintに解析するだけですか?データとdjango restフレームワークで検証されたデータの違いは何ですか?
答えて
デシリアライズ
あなたは電子メールが間違っているので、次のルールが
(公式docmentationから)適用見ることができるようにデータが例えばserializer = CommentSerializer(data={'email': 'foobar', 'content': 'baz'})
シリアライザ に入力され、
データをデシリアライズするときは、必ずの前にis_valid()を呼び出す必要があります。
data
あなたがデシリアライズしようとしているが、その後、あなたがserializer.validated_data
ADDITION
として検証データにアクセスできる有効な#True
ある場合
serializer.is_valid()
を検証したデータにアクセスする、またはオブジェクトのインスタンスを保存しようと
検証後にデータ変換が行われない場合は、データが有効かどうかをチェックし、検証エラーが発生した場合は.errors
プロパティには、結果のエラーメッセージを表す辞書が含まれます。
良い例これであなたはタイトルがジャンゴ関連している場合にのみチェック見ることができるようにあなたのやっフィールド検証
class CommentSerializer(serializers.Serializer):
title = serializers.CharField(max_length=100)
def validate_title(self, value):
if 'django' not in value.lower():
raise serializers.ValidationError("Title is not about Django")
return value
validate_title
があれば、あなたは.is_valid()
を呼び出すたびに呼び出されますときTrueの値大文字小文字のタイトルが返されます。それ以外の場合はValidationErrorが発生しますデータの変更なし
これは質問に答えません。データは常に検証されたデータと同じに見えますか? – user2080105
私は私の答えを編集しました。欲しいのはその明確な@ user2080105 –
変換がないことを言及している公式の出典がありますか? – user2080105
CommentSerializerでデータをカスタマイズできます。validate_content方法:
これはあなたのシリアライザです:
のでclass CommentSerializer(serializers.Serializer):
email=serializers.EmailField()
content=serializers.CharField()
def validate_content(self,value):
#If content is 'baz' returns 'foo'
if value and value == "baz":
return "foo"
return value
:
>>> serializer = CommentSerializer(data={'email': 'foobar', 'content': 'baz'})
>>> serializer.data
Traceback (most recent call last):
raise AssertionError(msg)
AssertionError: When a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation.
You should either call `.is_valid()` first, or access `.initial_data` instead.
>>> serializer.initial_data
{'content': 'baz', 'email': 'foobar'}
>>> serializer.validated_data
Traceback (most recent call last):
raise AssertionError(msg)
AssertionError: You must call `.is_valid()` before accessing `.validated_data`.
>>> serializer.is_valid()
False
>>> serializer.data
{'content': 'baz', 'email': 'foobar'}
>>> serializer.validated_data
{}
>>> serializer.errors
{'email': [u'Enter a valid email address.']}
今度は、正しい値
>>> serializer2 = CommentSerializer(data={'email': '[email protected]', 'content': 'baz'})
>>> serializer2.is_valid()
True
>>> serializer2.initial_data
{'content': 'baz', 'email': 'foobar'}
>>> serializer2.errors
{}
>>> serializer2.data
{'content': u'foo', 'email': u'[email protected]'}
>>> serializer2.validated_data
OrderedDict([(u'email', u'[email protected]'), (u'content', u'foo')])
てみましょうのは、間違った値(Eメール)で試してみましょうSo:
- データ:辞書であり、あなたは(だけIS_VALID後にそれを見ることができます)(あなただけ検証されない値を参照することができます)
- validated_dataがOrderedDictで、あなただけのIS_VALID後にそれを見ることができます() & & IS_VALID()==真
- 1. django restフレームワークでsave()、create()、update()の違いは何ですか?
- 2. Django REST Frameworkでデータを検証するタイミングと方法
- 3. Django RESTフレームワーク:ビューとビューセットの違い?
- 4. Djangoの認証と認証の違いは何ですか?
- 5. Django RESTフレームワーク:ネストされたシリアライザとデシリアライズ
- 6. Django Restフレームワークの認証エラー
- 7. Django RESTフレームワークでのユーザ認証
- 8. Django Rest Frameworkのネストされたシリアライザでの一意の検証
- 9. django restフレームワークとの角度認証
- 10. emberとdjango restフレームワークでデータを取得しようとしています
- 11. Django Restフレームワークでjsonデータを取り込む方法は?
- 12. Django RESTフレームワークのネストされたURLパターン
- 13. django-restフレームワークで正しい検証例外を取得するには?
- 14. django restフレームワークをappidとアクセストークンで認証しますか?
- 15. Django RESTフレームワークのModelViewSetによって返されたリストにデータを追加
- 16. ApiキーとDjango Restフレームワーク認証トークン
- 17. なぜdjango-rest-frameworkにOneToOneFieldデータが表示されないのですか - django
- 18. ルールとフロントエンドを使用してfirebaseデータベースでデータ検証を行う場合の違いは何ですか?
- 19. django rest-frammeworkでの認証とperimssionの違い
- 20. MVCのモデルとデータとデータベースの違いは何ですか?
- 21. Django Restフレームワーク、ModelSerializersおよびカスタムフィールドの検証
- 22. Django Rest Frameworkのネストされたシリアライザによるシリアライザフィールドの検証
- 23. Djangoの認証バックエンドとしてDjango RESTフレームワークを使用
- 24. Django RESTフレームワーク+ Django REST Swagger
- 25. Django RESTフレームワーク+ Django REST Swagger + ImageField
- 26. これらのデータ型の違いは何ですか?
- 27. Django REST Framework:実際にvalidate_ <fieldname>との違いは何ですか?
- 28. 良い検証フレームワークは何でしょうか?
- 29. "データ"と "タイプ"のキーワードの違いは何ですか?
- 30. cl_datatypeと通常のデータ型の違いは何ですか?
あなたのタイトルはあなたのコンテンツとは異なる問題があります。それは何ですか? – Linovia
"入力と出力の違いは何ですか?" - 広すぎる – Sayse
変換を理解することは詳細の違いを知ることにつながりますが、実際は同じ質問です – user2080105