Tuairimí rang-bhunaitheLink to this heading
Is é an dearcadh inghlaonta a ghlacann iarratas agus a thugann freagra ar ais. Is féidir leis seo a bheith níos mó ná feidhm amháin, agus soláthraíonn Django sampla de roinnt ranganna is féidir a úsáid mar thuairimí. Ligeann siad seo duit do thuairimí a struchtúrú agus an cód a athúsáid trí oidhreacht agus meascáin a úsáid. Tá roinnt tuairimí cineálacha ann freisin maidir le tascanna a gheobhaidh muid orthu níos déanaí, ach b'fhéidir gur mhaith leat do struchtúr féin de radhairc in-athúsáidte a dhearadh a oireann do do chás úsáide. Le haghaidh sonraí iomlána, féach an:doc: `doiciméadú tagartha tuairimí rang-bhunaithe '</ref/class-based-views/index>.
Samplaí bunúsachaLink to this heading
Soláthraíonn Django ranganna bunradharc a oireann do raon leathan feidhmchlár. Tá na tuairimí go léir ag oidhreacht ón aic:class: ~django.views.Generic.Base.View, a láimhseálann an radharc a nascadh isteach sna URLanna, seoladh modh HTTP agus gnéithe coitianta eile. :class: ~Django.Views.Generic.Base.RedirectView soláthraíonn atreorú HTTP, agus:class: ~Django.Views.Generic.Base.TemplateView leathnaíonn an bunaicme chun teimpléad a dhéanamh freisin.
Úsáid i do URLConfLink to this heading
Is é an bealach is díreach chun tuairimí cineálacha a úsáid ná iad a chruthú go díreach i do URLConf. Mura bhfuil tú ag athrú ach cúpla tréith ar radharc rang-bhunaithe, is féidir leat iad a chur isteach sa mhodh:meth: ~Django.Views.Generic.Base.View.as_View glaoch air féin:
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path("about/", TemplateView.as_view(template_name="about.html")),
]
Déanfaidh aon argóintí a chuirtear chuig:meth: ~django.views.generic.base.view.as_view tréithe atá leagtha síos ar an rang. Sa sampla seo, socraíomar template_name ar an TemplateView`. Is féidir patrún forbhríoch den chineál céanna a úsáid don tréith ``url ``ar:class: ~django.views.Generic.Base.RedirectView.
Tuairimí cineálacha a fho-aicmiúLink to this heading
Is é an dara bealach níos cumhachtaí chun tuairimí cineálacha a úsáid ná oidhreacht ó radharc atá ann cheana agus tréithe a shárú (mar shampla an template_name`) nó modhanna (mar shampla ``get_context_data ``) i do fho-rang chun luachanna nó modhanna nua a sholáthar. Smaoinigh, mar shampla, ar radharc nach dtaispeánann ach teimpléad amháin, ``about.html`. Tá dearcadh cineálach ag Django chun é seo a dhéanamh -:class: ~Django.Views.Generic.Base.TemplateView - ionas gur féidir linn é a fho-aicmiú, agus ainm an teimpléid a shárú:
# some_app/views.py
from django.views.generic import TemplateView
class AboutView(TemplateView):
template_name = "about.html"
Ansin ní mór dúinn an dearcadh nua seo a chur isteach inár URLConf. :class: Is rang é ~django.views.generic.base.templateView, ní feidhm, mar sin dírímid an URL chuig an modh ranga:meth: ~django.views.generic.base.view.as_view ina ionad sin, a sholáthraíonn iontráil cosúil le feidhm chuig tuairimí rang-bhunaithe:
# urls.py
from django.urls import path
from some_app.views import AboutView
urlpatterns = [
path("about/", AboutView.as_view()),
]
Le haghaidh tuilleadh faisnéise maidir le conas na tuairimí cineálacha atá tógtha in úsáid, téigh i gcomhairle leis an gcéad ábhar eile ar:doc: `tuairimí cineálacha bunaithe ar aicme'</topics/class-based-views/generic-display>.
Tacú le modhanna HTTP eileLink to this heading
Cuir i gcás gur mhaith le duine rochtain a fháil ar ár leabharlann leabhar thar HTTP ag baint úsáide as na tuairimí Ceanglódh an cliant API anois agus arís agus sonraí leabhar a íoslódáil do na leabhair a foilsíodh ón gcuairt dheireanach. Ach mura raibh aon leabhair nua le feiceáil ó shin i leith, is cur amú ama LAP agus bandaleithead é na leabhair a fháil ón mbunachar sonraí, freagra iomlán a thabhairt agus é a sheoladh chuig an gcliant. B'fhéidir gur fearr a iarraidh ar an API nuair a foilsíodh an leabhar is déanaí.
Déanaimid léarscáil an URL chun amharc liosta a chur in áirithe sa URLConf:
from django.urls import path
from books.views import BookListView
urlpatterns = [
path("books/", BookListView.as_view()),
]
Agus an dearcadh:
from django.http import HttpResponse
from django.views.generic import ListView
from books.models import Book
class BookListView(ListView):
model = Book
def head(self, *args, **kwargs):
last_book = self.get_queryset().latest("publication_date")
response = HttpResponse(
# RFC 1123 date format.
headers={
"Last-Modified": last_book.publication_date.strftime(
"%a, %d %b %Y %H:%M:%S GMT"
)
},
)
return response
Má dhéantar rochtain ar an radharc ó iarratas GET, cuirtear liosta réada ar ais sa fhreagra (ag baint úsáide as an teimpléad book_list.html). Ach má eisíonn an cliant iarratas HEAD, tá comhlacht folamh ag an bhfreagra agus léiríonn an ceannteideal `Last Modfied cathain a foilsíodh an leabhar is déanaí. Bunaithe ar an bhfaisnéis seo, féadfaidh an cliant an liosta réad iomlán a íoslódáil nó nach féidir.
Tuairimí asincrónacha bunaithe ar rangLink to this heading
Chomh maith leis na láimhseálaithe modh sioncrónach (def`) a thaispeántar cheana féin, féadfaidh fo-aicmí View` láimhseálaithe modh asincrónacha (``async def) a shainiú chun cód asincrónach a ghiaráil ag baint úsáide as ag fanacht:
import asyncio
from django.http import HttpResponse
from django.views import View
class AsyncView(View):
async def get(self, request, *args, **kwargs):
# Perform io-blocking view logic using await, sleep for example.
await asyncio.sleep(1)
return HttpResponse("Hello async world!")
Laistigh de rang amhairc amháin, caithfidh gach láimhseálaí modh atá sainmhínithe ag úsáideoir a bheith sioncrónach, ag baint úsáide as def`, nó gach asincrónach, ag baint úsáide as async def. Ardófar eisceacht ImproperlyConfigured i as_view () ``má tá dearbhuithe ``def agus async def` measctha.
Braithfidh Django tuairimí asincrónacha go huathoibríoch agus reáchtálfaidh siad iad i gcomhthéacs asincrónach. Is féidir leat tuilleadh a léamh faoi thacaíocht asincrónach Django, agus conas tuairimí async a úsáid is fearr, in:doc: /topics/async.