Տվյալների դինամիկ փոփոխություն ձևանմուշներում
Մենք ունենք տարբեր կտորներ. Post մոդելը սահմանվում է models.py- ում, մենք ունենք post_list- ը views.py - ում և ավելացնում է ձևանմուշը: Բայց ինչպե՞ս ցուցադրել գրառումները HTML էջի ձևանմուշում: Ի վերջո, սա հենց այն է, ինչին մենք ուզում ենք հասնել. Վերցնել որոշակի բովանդակություն (շտեմարանում պահվող մոդելներ) և ճշգրիտ ցուցադրել դրանք մեր ձևանմուշում/ template, այնպես չէ՞:
Դրան են ծառայում դիտումները/views ՝ մոդելներն ու ձևանմուշները/models and templates/ միացնելու համար: post_list view-ում մենք պետք է վերցնենք այն մոդելները, որոնք մենք ցանկանում ենք ցուցադրել, և այնուհետև դրանք փոխանցել ձևանմուշին: view-ից մենք որոշում ենք, թե ինչ (մոդել) կցուցադրվի ձևանմուշում:
Լավ, բա ինչպե՞ս ենք դրան հասնելու:
Մենք պետք է բացենք blog/views.py ֆայլը կոդի խմբագրում/code editor: Այսպիսով, post_list view այսպիսի տեսք ունի.
blog/views.py
from django.shortcuts import render
def post_list(request):
return render(request, 'blog/post_list.html', {})
Հիշո՞ւմ եք, մենք խոսեցինք այլ ֆայլերից կոդ ներառելու մասին: Այժմ մենք պետք է ներառենք մեր սահմանած մոդելը models.py ֆայլում: Մենք կավելացնենք տողը from .models import Post - ից հետևյալ կերպ.
blog/views.py
from django.shortcuts import render
from .models import Post
Մոդելներից առաջ կետը/dot նշանակում է current directory/ընթացիկ գրացուցակ կամ current application/ընթացիկ ծրագիր: Թե views.py- ը, թե models.py - ին գտնվում են նույն գրացուցակում: Սա նշանակում է, որ մենք կարող ենք օգտագործել կետ . և ֆայլի անունը (առանց .py-ի): Դրանից հետո մենք ներմուծում ենք մոդելի անվանումը (Post):
Բայց ի՞նչ է հաջորդը: Post մոդելից իրական գրառում ստանալու համար մեզ պետք է այսպես կոչված QuerySet:
QuerySet
Դուք արդեն պետք է ծանոթ լինեք, թե ինչպես է աշխատում QuerySets- ը: Մենք դրա մասին խոսեցինք Django ORM (QuerySets) գլխում :
Այսպիսով, հիմա մենք ուզում ենք հրապարակված բլոգային հաղորդագրություններ/ published blog posts ՝ տեսակավորված ըստ published_date- ի, ճիշտ է: Մենք դա արդեն արեցինք QuerySets գլխում:
blog/views.py
Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
Այսպիսով, եկեք բացենք blog/views.py ֆայլը կոդի խմբագրում և ավելացնենք կոդի այս կտորը def post_list(request), բայց մի մոռացեք ֆայլի սկզբում ավելացնել from django.utils import timezone.
blog/views.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {})
Մնացել է ընդամենը երկու բան ՝ մեր QuerySet- ը բլոգի գրառումների ցուցակում ցուցադրելու համար.
- Փոխանցեք
postsQuerySet-ը ձևանմուշի մեջ ՝ զանգը/call փոխելովrenderfunction-ի /մատուցման գործառույթի (մենք դա կանենք հենց հիմա): - Փոփոխեք ձևանմուշը ՝ QuerySet
posts-ը ցուցադրելու համար: Մենք կանդրադառնանք դրան հաջորդ գլխում:
Խնդրում ենք նկատի ունենալ, որ մենք QuerySet- ի համար variable/փոփոխական ենք ստեղծել. posts/հաղորդագրություններ: Դուք կարող եք դա համարել որպես անուն մեր QuerySet- ի համար: Այսուհետ մենք կարող ենք դրան անդրադառնալ այս անունով:
render/ռենդեր գործառույթում մենք արդեն ունենք request/հարցման պարամետրը (այսինքն այն ամենը, ինչ մենք ստանում ենք օգտագործողից որպես խնդրանք ինտերնետի միջոցով) և ձևանմուշի ֆայլը ('blog/post_list.html'): Վերջին պարամետրը, որն ունի այսպիսի տեսք {}, այն է, որտեղ մենք կարող ենք ավելացնել ձևանմուշ օգտագործելու ցանկացած բան: Սա այն վայրն է, որտեղ մենք կարող ենք ավելացնել որոշ բաներ, ձևանմուշի օգտագործման համար: Մենք պետք է նրանց անուններ տանք (մենք հիմա հավատարիմ կմնանք 'posts'/ հաղորդագրություններին ) :) Դա պետք է ունենա այսպիսի տեսք. {'posts': posts}: Նկատի ունեցեք, որ մինչ : այս հատվածը լար է; հարկավոր է այն փակել չակերտներով. '':
Այսպիսով, վերջապես, մեր blog/views.py ֆայլը պետք է ունենա այսպիսի տեսք.
blog/views.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
Այսքանը: Հիմա ժամանակն է գնալ ձևանմուշ/template և ցուցադրել QuerySet- ը էջում:
Ցանկանու՞մ եք մի փոքր ավելին իմանալ Django- ի QuerySets- ի մասին: Անցեք այս հղումով՝ https://docs.djangoproject.com/en/2.2/ref/models/querysets/