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
If the view is accessed from a GET request, an object list is returned in
the response (using the book_list.html template). But if the client issues
a HEAD request, the response has an empty body and the Last-Modified
header indicates when the most recent book was published. Based on this
information, the client may or may not download the full object list.
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.