Tuairimí bonnLink to this heading

Soláthraíonn na trí rang seo a leanas cuid mhaith den fheidhmiúlacht a theastaíonn chun radhairc Django a chruth Féadfaidh tú smaoineamh orthu mar thuairimí tuismitheoir*, ar féidir leo féin a úsáid nó iad a oidhreacht uathu. Ní fhéadfaidh siad na cumais go léir a theastaíonn le haghaidh tionscadail a sholáthar, agus sa chás sin tá tuairimí Meascins agus Cineálacha bunaithe ar aicme ann.

Tá go leor de na tuairimí rang-bhunaithe ionsuite Django ag oidhreacht ó thuairimí rang-bhunaithe eile nó meascáin éagsúla. Toisc go bhfuil an slabhra oidhreachta seo an-tábhachtach, déantar na ranganna sinsear a dhoiciméadú faoin teideal ranna**Sinsear (MRO) **. Is acrainm é MRO d'Ordú Réitigh Modh.

AmharcLink to this heading

class django.views.generic.base.ViewLink to this definition

An rang amharc bonn. Tá gach tuairim eile bunaithe ar rang-bhunaithe ag oidhreacht ón rang bonn seo. Ní dearcadh cineálach é go docht agus dá bhrí sin is féidir é a allmhairiú ó django.views.

Cairt Sreabhadh Modh

  1. setup()

  2. dispatch()

  3. http_method_not_allowed()

  4. options()

Amharcanna sampla.py:

Code
from django.http import HttpResponse
from django.views import View


class MyView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse("Hello, World!")

Sampla urls.py:

Code
from django.urls import path

from myapp.views import MyView

urlpatterns = [
    path("mine/", MyView.as_view(), name="my-view"),
]

Aithníocht

http_method_namesLink to this definition

An liosta d'ainmneacha modh HTTP a nglacfaidh an dearcadh seo leis.

Réamhshocraithe:

Code
["get", "post", "put", "patch", "delete", "head", "options", "trace"]

Modhaí

classmethod as_view(**initkwargs)Link to this definition

Tugann sé dearcadh inghlaonta ar ais a ghlacann iarratas agus a thugann freagra ar ais:

Code
response = MyView.as_view()(request)

Tá tréithe view_class agus view_initkwargs sa radharc ar ais.

<how-django-processes-a-request>Nuair a thugtar an radharc le linn an timthriall iarrata/freagartha, sannann an modh:meth: setup an modh:class: ~django.http.http.httpRequest do thréith request an radharc, agus aon argóintí seasaimh agus/nó eochairfhoir:ref: gabhadh ón bpatrún URL go dtí na tréithe args` agus kwargs` faoi seach. Ansin: Meth: tugtar “seoladh”.

Má shainmhíníonn fo-aicme View láimhseálaithe modh asincrónacha (async def), marcálfaidh as_view () ``an glaoch ar ais mar fheidhm coroutine. Ardófar eisceacht ``ImproperlyConfigured má shainmhínítear láimhseálaithe asincrónach (async def) agus sioncrónach (def`) araon ar rang amharc amháin.

setup(request, *args, **kwargs)Link to this definition

Déanann sé tionscnamh eochair radharc roimh: meth: `sheoladh `.

Assigns the HttpRequest to the view's request attribute, and any positional and/or keyword arguments captured from the URL pattern to the args and kwargs attributes, respectively.

Má tá an modh seo á shárú agat, ní mór duit glaoch ar ``super () ``.

dispatch(request, *args, **kwargs)Link to this definition

An chuid tuairim den tuairim -- an modh a ghlacann le argóint iarrat móide argóintí, agus a thugann freagra HTTP ar ais.

Déanfaidh an cur i bhfeidhm réamhshocraithe iniúchadh ar an modh HTTP agus déanfaidh sé iarracht é a tharmligean chuig modh a mheaitseálann leis an modh HTTP; tarmligfear GET chuig get () `,`` POST ```` post () `, agus mar sin de.

De réir réamhshocraithe, tarmligfear iarratas HEAD chuig get () ``. Más duit iarratais ``HEAD a láimhseáil ar bhealach difriúil ná GET, is féidir leat an modh ``head () ``a shárú. Féach:ref: tacaíocht ear-http-methods mar shampla.

http_method_not_allowed(request, *args, **kwargs)Link to this definition

Má ghlaoadh ar an radharc le modh HTTP nach dtacaíonn sé, tugtar an modh seo ina ionad sin.

Tugann an cur i bhfeidhm réamhshocraithe HttpResponseNotAllowed le liosta de na modhanna ceadaithe i ngnáthtéacs.

options(request, *args, **kwargs)Link to this definition

Láimhseálann freagra ar iarratais ar an briathar HTTP OPTIONS. Tugann sé freagra ar ais leis an gceannteideal ``Allow ``ina bhfuil liosta d'ainmneacha modh HTTP ceadaithe an amharc.

Má tá na láimhseálaithe modhanna HTTP eile ar an rang asincrónach (async def) ansin filteofar an freagra i bhfeidhm coroutine le húsáid le ``ag fanacht `.

``TeimpléadView ``Link to this heading

class django.views.generic.base.TemplateViewLink to this definition

Déanann sé teimpléad ar leith, leis an gcomhthéacs ina bhfuil paraiméadair gabhadh san URL.

**Sinsear (MRO) **

Oidhreann an dearcadh seo modhanna agus tréithe ó na tuairimí seo a leanas:

Cairt Sreabhadh Modh

  1. setup()

  2. dispatch()

  3. http_method_not_allowed()

  4. get_context_data()

Amharcanna sampla.py:

Code
from django.views.generic.base import TemplateView

from articles.models import Article


class HomePageView(TemplateView):
    template_name = "home.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["latest_articles"] = Article.objects.all()[:5]
        return context

Sampla urls.py:

Code
from django.urls import path

from myapp.views import HomePageView

urlpatterns = [
    path("", HomePageView.as_view(), name="home"),
]

Comhthéacs

  • Daonra (trí:class: ~django.views.generic.base.contextMixin) leis na hargóintí eochairfhocal a ghabhadh ón bpatrún URL a d'fhreastail an dearcadh.

  • Is féidir leat comhthéacs a chur leis freisin ag baint úsáide as an argóint eochairfhocal: attr: ~django.views.generic.base.contextMixin.extra_context le haghaidh: meth: ~django.views.generic.base.view.as_view.

RedirectviewLink to this heading

class django.views.generic.base.RedirectViewLink to this definition

Atreoraíonn sé chuig URL ar leith.

D'fhéadfadh go mbeadh formáidiú teaghrán i stíl foclóra san URL a thugtar, a dhéanfar idirphóladh i gcoinne na bparaiméadair a ghabhadh san URL. Toisc go ndéantar idirpháirtíocht eochairfhocal i gcónaí* (fiú mura ndéantar aon argóintí isteach), ní mór aon charachtair "%" sa URL a scríobh mar "%%" ionas go ndéanfaidh Python iad a thiontú go comhartha faoin gcéad amháin ar aschur.

Más é None ``an URL a thugtar, cuirfidh Django ``HttpResponseGone (410) ar ais.

**Sinsear (MRO) **

Oidhreann an dearcadh seo modhanna agus tréithe ón radharc seo a leanas:

Cairt Sreabhadh Modh

  1. setup()

  2. dispatch()

  3. http_method_not_allowed()

  4. get_redirect_url()

Amharcanna sampla.py:

Code
from django.shortcuts import get_object_or_404
from django.views.generic.base import RedirectView

from articles.models import Article


class ArticleCounterRedirectView(RedirectView):
    permanent = False
    query_string = True
    pattern_name = "article-detail"

    def get_redirect_url(self, *args, **kwargs):
        article = get_object_or_404(Article, pk=kwargs["pk"])
        article.update_counter()
        return super().get_redirect_url(*args, **kwargs)

Sampla urls.py:

Code
from django.urls import path
from django.views.generic.base import RedirectView

from article.views import ArticleCounterRedirectView, ArticleDetailView

urlpatterns = [
    path(
        "counter/<int:pk>/",
        ArticleCounterRedirectView.as_view(),
        name="article-counter",
    ),
    path("details/<int:pk>/", ArticleDetailView.as_view(), name="article-detail"),
    path(
        "go-to-django/",
        RedirectView.as_view(url="https://www.djangoproject.com/"),
        name="go-to-django",
    ),
]

Aithníocht

urlLink to this definition

An URL le atreorú chuig, mar shreang. Nó ``None ``chun earráid HTTP 410 (Iomte) a ardú.

pattern_nameLink to this definition

Ainm an phatrún URL le atreorú chuig. Déanfar aisiompú ag baint úsáide as na hargaí agus na kwargs céanna a chuirtear isteach don dearcadh seo.

permanentLink to this definition

Cibé an chóir go mbeadh an t-atreorú buan. Is é an t-aon difríocht anseo ná an cód stádais HTTP ar ais. Má tá True, ansin úsáidfidh an t-atreorú cód stádais 301. Má tá False, úsáidfidh an t-atreorú cód stádais 302. De réir réamhshocraithe, is é buan False`.

query_stringLink to this definition

Cibé an gcaithfidh tú dul ar feadh an sreangán fiosrúcháin GET chuig an suíomh nua. Má tá True, ansin cuirtear an teaghrán fiosrúcháin leis an URL. Má tá False, cuirtear an teaghrán fiosrúcháin a chaitheamh. De réir réamhshocraithe, is é query_string False.

Modhaí

get_redirect_url(*args, **kwargs)Link to this definition

Tógann sé an spriocURL le haghaidh athatreorú.

<how-django-processes-a-request>Is argóintí seasaimh agus/nó eochairfhocal iad na hargóintí args` agus kwargs: ref: gabhadh ón bpatrún URL, faoi seach.

Úsáideann an cur i bhfeidhm réamhshocraithe:attr: url `mar shreang tosaigh agus déanann sé leathnú paraiméadair ainmnithe ``%` sa sreang sin ag baint úsáide as na grúpaí ainmnithe a ghabhadh san URL.

Má tá: attr: url” socraithe, iarrann ``get_redirect_url () ``an: attr: `pattern_name a aisiompú ag baint úsáide as an méid a gabhadh sa URL (úsáidtear grúpaí ainmnithe agus gan ainmnithe araon).

Má iarrann: attr: query_string, cuirfidh sé an teaghrán fiosrúcháin leis an URL a ghintear freisin. Féadfaidh fo-aicmí aon iompar is mian leo a chur i bhfeidhm, fad is a thabharfaidh an modh sreang URL réidh le hathreorú.