DjangoGirls Seoul 장고 입문 스터디 #2 Django MTV
Django Girls SeoulDjango StudyDjango Model-View-Template
View Slide
MTV? MVC?
Model?
Model (ݽ؛)• Database৬ Djangoܳ োѾ• DB Column ഋधਸ • ؘఠ ҙ҅ܳ from django.db import modelsclass SomeInfo(models.Model):name = models.CharField(max_length=200)• nameۄח ܴ Column ࢤࢿغҊ ୭ӡо 200ਵ۽ ઁೠ Ѧܽ٘۽ ػ.
Model Field (ݽ؛٘)• models SomeInfo ېझ => DB SomeInfo Table• SomeInfo ېझ name => DB name ColumnModel Manager (ݽ؛ ݒפ)• DB Queryܳ ܻ• SomeInfo.objects.ޤޤ ࣘࢿਵ۽ ઁҕ
User Method (ࢎਊ ݫࣗ٘)• ݽ؛ ݫࣗ٘о ݽ؛ী • SomeInfo١ ݽ؛ classউী ػ ೣࣻ
Rela%onship (ҙ҅)• ݽ؛ class݃ (DB table݃) ҙ҅• OneToOneField(1:1) / ForeignKey(1:n) / ManyToManyField(n:n)class UserInfo(models.Model):user = models.OneToOneField(settings.AUTH_USER_MODEL) # ਬо о ਬ ࠁח ױ ೞա!nickname = models.CharField(max_length=20)class Post(models.Model):user = models.ForeignKey(settings.AUTH_USER_MODEL) # ਬо ৈ۞ѐ Ӗਸ ॶ ࣻ .title = models.CharField(max_length=200)content = models.TextField()class Tag(models.Model):post = models.ManyToManyField(Post) # ೠ Postী ৈ۞ѐ కӒо ׳ܾ ࣻ Ҋ, ೠ కӒী ৈ۞ѐ Postо .
Rela%onship (ҙ҅)• OneToOneFieldu = User(user=request.user)u.userinfo.nickname # user UserInfo nickname• ForeignKeyu.post_set.all() # userо ॵ ݽٚ post• ManyToManyFieldp = Post.objects.first()p.tag_set.all()
Template?
Template (మ݁)• Python ёܳ HTMLীࢲ ਊೡ ࣻ ب۾• Django Template ޙߨਸ ਊ ( Jinja2)• Viewীࢲ ֈѹח ؘఠܳ ਊ• renderೣࣻীࢲ ਊؽ• MVCݽ؛ V(࠭)ী ೧ؽ
Template (మ݁){{ some_var }}{% some_tag %}{{ some_var | filter }}{# ࢳ #}{% comment %} {% endcomment %}
View?
View (࠭)• Djangoо URLӔী ٮۄ ߈ਸ ࠁח Ҕ• MVCݽ؛ C(ஶ܀۞) ೡ• Func4on Based View vs Class Based View• request -> response
HTTP Request• method // GET, POST, ..• GET, POST -> DICT(k:v)• FILES• user• session• ...
REST?RESTful?
REST <=> CRUD
REST and CRUD• HTTP Methodח POST / GET / PUT / DELETE• CRUDח Create / Read / Update / Delete• пп
RESTful • OpenAPI ઁҕ ए• ਗೞח ؘఠ ఋੑਵ۽ ઁҕ (JSON / XML / RSS)• StateLessࢲߡ (ਃр Contextח غ ঋ)• ۽٘ߖ۠यী ਬܻ• ࣁ࣌ ࢎਊਸ ӂೞ ঋ (п ਃী ة݀ਵ۽ ߈)• ۽Ӓੋ ١ Tokenਸ ਊ೧ ੋध