Django REST FRAMEWORK Tutorial 5 -- シリアライザでモデルを継承して短く書く
14282 단어 djangorestframework
前提
docker-compose.yml を作成で きていて
command: python manage.py runserver 0.0.0.0:8001
volumes:
- .:/code
ports:
- "8002:8001"
localhost 8002 액세스로
장고 のロケットページが出るようになっていてる状態
ターミナルでテーブルの読み書きができる状態
これまでの 모델과 시리얼라이저
https://www.django-rest-framework.org/tutorial/1-serialization/#using-modelserializers
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()
linenos = models.BooleanField(default=False)
language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
class Meta:
ordering = ['created']
스니펫/models.py 에
만든, 제목, 코드, 리넨, 언어, 스타일,
これらのカラム名とデータの型たちを定義して
메타 を作っ
一括して作成日順に並べる.
https://yu-nix.com/blog/2021/2/24/django-meta/
Meta の使い方は この사이트가 詳しかった.
class SnippetSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
title = serializers.CharField(required=False, allow_blank=True, max_length=100)
code = serializers.CharField(style={'base_template': 'textarea.html'})
linenos = serializers.BooleanField(required=False)
language = serializers.ChoiceField(choices=LANGUAGE_CHOICES, default='python')
style = serializers.ChoiceField(choices=STYLE_CHOICES, default='friendly')
시리얼라이저로
id, 제목, 코드, 리넨, 언어, 스타일,
これらのフィールドをシリアライズする.
model と比べると created がなくて id が増えている.
쉘 & 모델 とシリアライザの動作確認
dc run web python manage.py shell
Starting rest5_db_1 ... done
Creating rest5_web_run ... done
Python 3.10.1 (main, Dec 21 2021, 06:15:32) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
まだ 보기 には組み込んでないので、shell を起動して
from snippets.serializers import SnippetSerializer
serializer = SnippetSerializer()
print(repr(serializer))
스니펫 のシリアライザを出力する
SnippetSerializer():
id = IntegerField(read_only=True)
title = CharField(allow_blank=True, max_length=100, required=False)
code = CharField(style={'base_template': 'textarea.html'})
linenos = BooleanField(required=False)
language = ChoiceField(choices=[('abap', 'ABAP'),
すると, シリアライザの型が表示される.
Serializer の id ~ style の再定義をモデルから継承して省略する
class SnippetSerializer(serializers.ModelSerializer):
Snippet시리아라이자의 引数を
普通のシリアライザから、모델시리아라이자に変更し
class Meta:
model = Snippet
fields = ['id', 'title', 'code', 'linenos', 'language', 'style']
id ~ style のカラムの再定義している内容を
모델 와 피르도를 결정하는 일로 引き継ぐ.
shell で 短く書いた Snippet시리아라이자を出力してみる
from snippets.serializers import SnippetSerializer
serializer = SnippetSerializer()
print(repr(serializer))
SnippetSerializer():
id = IntegerField(label='ID', read_only=True)
title = CharField(allow_blank=True, max_length=100, required=False)
code = CharField(style={'base_template': 'textarea.html'})
linenos = BooleanField(required=False)
language = ChoiceField(choices=[('abap', 'ABAP'),
全く同じようにカラムの型が表示される.
Reference
이 문제에 관하여(Django REST FRAMEWORK Tutorial 5 -- シリアライザでモデルを継承して短く書く), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/django-rest-framework-tutorial-5-siriaraizademoderuwoji-cheng-siteduan-kushu-ku-5dop텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)