Տվյալների դինամիկ փոփոխություն ձևանմուշներում
Մենք ունենք տարբեր կտորներ. 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- ը բլոգի գրառումների ցուցակում ցուցադրելու համար.
- Փոխանցեք
posts
QuerySet-ը ձևանմուշի մեջ ՝ զանգը/call փոխելովrender
function-ի /մատուցման գործառույթի (մենք դա կանենք հենց հիմա): - Փոփոխեք ձևանմուշը ՝ 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/