TemplateResponse agus SimpleTemplateResponseLink to this heading

Caighdeán:aicme: Is struchtúir statacha iad rudaí ~django.http.HttpResponse. Cuirtear bloc d'ábhar réamh-rindreáilte ar fáil dóibh tráth na tógála, agus cé gur féidir an t-ábhar sin a mhodhnú, níl sé i bhfoirm a fhágann go bhfuil sé éasca modhnuithe a dhéanamh.

Mar sin féin, is féidir go mbeadh sé tairbheach uaireanta ligean do mhaisitheoirí nó meán-earraí freagra a mhodhnó* tar éis dó* é a thógáil ag an dearcadh. Mar shampla, b'fhéidir gur mhaith leat an teimpléad a úsáidtear a athrú, nó sonraí breise a chur sa chomhthéacs.

Soláthraíonn TemplateResponse bealach chun é sin a dhéanamh. Murab ionann agus rudaí bunús:class: ~django.http.httpResponse, coinníonn rudaí TemplateResponse sonraí an teimpléid agus an chomhthéacs a chuir an dearcadh ar fáil chun an freagra a ríomh. Ní ríomhtar aschur deiridh an fhreagra go dtí go mbeidh sé ag teastáil, níos déanaí sa phróiseas freagartha.

rudaí SimpleTemplateResponseLink to this heading

class SimpleTemplateResponseLink to this definition

tréitheLink to this heading

SimpleTemplateResponse.template_nameLink to this definition

Ainm an teimpléid atá le déanamh. Glacann sé le réad teimpléad atá ag brath ar chúlra (amhail iad siúd ar ais ar:func: `~django.template.loader.get_template () `), ainm teimpléad, nó liosta ainmneacha teimpléad.

Sampla: ['foo.html', 'path/to/bar.html']

SimpleTemplateResponse.context_dataLink to this definition

Na sonraí comhthéacs atá le húsáid agus an teimpléad á rindreáil. Caithfidh sé a: aicme: dict.

Sampla: {'foo': 123}

SimpleTemplateResponse.rendered_contentLink to this definition

Luach reatha a rinneadh an ábhair freagartha, ag baint úsáide as an teimpléad reatha agus na sonraí comhthéacs.

SimpleTemplateResponse.is_renderedLink to this definition

Boolean a léiríonn an bhfuil an t-ábhar freagartha a rinneadh.

ModhannaLink to this heading

SimpleTemplateResponse.__init__(template, context=None, content_type=None, status=None, charset=None, using=None, headers=None)Link to this definition

Cuireann sé réad a:class: ~Django.Template.Response.SimpleTemplateResponse leis an teimpléad, an comhthéacs, an cineál ábhair, stádas HTTP, agus tacar charta ar leith.

Teimpléad

Rud teimpléad atá ag brath ar chúlra (amhail iad siúd a d'fhaigh:func: `~django.template.loader.get_template () `), ainm teimpléad, nó liosta ainmneacha teimpléad.

comhthéacs

A: aicme: ordach luachanna le cur le comhthéacs an teimpléid. De réir réamhshocraithe, is foclóir folamh é seo.

``cineál_ábhar ``

An luach atá san áireamh sa cheanntásc HTTP Content-Type, lena n-áirítear an tsonraíocht cineál MIME agus an ionchódú tacar carachtair. Má shonraítear content_type, ansin úsáidtear a luach. Seachas sin, úsáidtear 'text/html'.

stádas

An cód stádais HTTP don fhreagra.

charset

An charset ina ndéanfar an freagra a ionchódú. Mura dtugtar é bainfear as content_type`, agus mura n-éiríonn leis sin, úsáidfear an socrú: setting: DEFAULT_CHARSET.

`Úsáid

An: Socrú: `AINM <TEMPLATES-NAME>`inneall teimpléad le húsáid chun an teimpléad a luchtú.

ceannair

A: aicme: ordach ceanntásca HTTP le cur leis an bhfreagra.

SimpleTemplateResponse.resolve_context(context)Link to this definition

Réamhphróiseálann sonraí comhthéacs a úsáidfear chun teimpléad a rindreáil. Glacann sé: aicme: ordach sonraí comhthéacs. De réir réamhshocraithe, filleann sé an chéanna: class: dict.

Athraigh an modh seo d'fhonn an comhthéacs a shaincheapadh.

SimpleTemplateResponse.resolve_template(template)Link to this definition

Réitíonn sé an tsampla teimpléid le húsáid le haghaidh rindreáil. Glacann sé le réad teimpléad atá ag brath ar chúlra (amhail iad siúd ar ais ar:func: `~django.template.loader.get_template () `), ainm teimpléad, nó liosta ainmneacha teimpléad.

Filleann sé an tsampla réad teimpléad atá ag brath ar chúlra atá le léiriú

Athraigh an modh seo d'fhonn luchtú teimpléad a shaincheapadh.

SimpleTemplateResponse.add_post_render_callback()Link to this definition

Cuir glaoch ar ais a ghairmfear tar éis an rindreáil a dhéanamh. Is féidir an crúca seo a úsáid chun oibríochtaí próiseála áirithe (mar shampla caching) a chur siar go dtí go mbeidh rindreáil tarlú.

Má rinneadh an:class: ~django.template.Response.SimpleTemplateResponse cheana féin, cuirfear an glaoch ar ais láithreach.

Nuair a thugtar air, cuirfear argóint amháin ar ais - an t-áis rendered:class: ~django.template.response.simpleTemplateResponse.

Má thugann an glaoch ar ais luach nach None, úsáidfear é seo mar fhreagra in ionad an réad freagartha bunaidh (agus cuirfear ar aghaidh chuig an gcéad phost eile ag déanamh glaonna aisghlaonna srl.)

SimpleTemplateResponse.render()Link to this definition

Socraíonn sé response.content don toradh a fhaightear ar:attr: SimpleTemplateResponse.rendered_content, ritheann sé gach glaonna iar-rindreála, agus filleann sé an réad freagartha mar thoradh air.

Ní bheidh éifeacht ag `render () ``ach an chéad uair a thugtar air. Ar ghlaonna ina dhiaidh sin, cuirfidh sé an toradh a fhaightear ón gcéad ghlao ar ais.

Rudaí TemplateResponseLink to this heading

class TemplateResponseLink to this definition

Is fo-aicme é TemplateResponse de:class: ~django.template.response.simpletemplateResponse a bhfuil a fhios aige faoin reatha:class: ~django.http.httpRequest.

ModhannaLink to this heading

TemplateResponse.__init__(request, template, context=None, content_type=None, status=None, charset=None, using=None, headers=None)Link to this definition

Cuireann sé réad a:class: ~django.template.response.templateResponse leis an iarraidh, an teimpléad, an comhthéacs, an cineál ábhair, stádas HTTP, agus tacar charta a thugtar.

Iarrata

An:class: ~django.http.httpRequest sampla.

Teimpléad

Rud teimpléad atá ag brath ar chúlra (amhail iad siúd a d'fhaigh:func: `~django.template.loader.get_template () `), ainm teimpléad, nó liosta ainmneacha teimpléad.

comhthéacs

A: aicme: ordach luachanna le cur le comhthéacs an teimpléid. De réir réamhshocraithe, is foclóir folamh é seo.

``cineál_ábhar ``

An luach atá san áireamh sa cheanntásc HTTP Content-Type, lena n-áirítear an tsonraíocht cineál MIME agus an ionchódú tacar carachtair. Má shonraítear content_type, ansin úsáidtear a luach. Seachas sin, úsáidtear 'text/html'.

stádas

An cód stádais HTTP don fhreagra.

charset

An charset ina ndéanfar an freagra a ionchódú. Mura dtugtar é bainfear as content_type`, agus mura n-éiríonn leis sin, úsáidfear an socrú: setting: DEFAULT_CHARSET.

`Úsáid

An: Socrú: `AINM <TEMPLATES-NAME>`inneall teimpléad le húsáid chun an teimpléad a luchtú.

ceannair

A: aicme: ordach ceanntásca HTTP le cur leis an bhfreagra.

An próiseas rindreálaLink to this heading

Roimh a:class: ~Django.Template.Response.TemplateResponse is féidir sampla a thabhairt ar ais chuig an gcliant, caithfear é a léiriú. Glacann an próiseas rindreála léiriú idirmheánach teimpléad agus comhthéacs, agus casann sé isteach sa sruth béite deiridh is féidir a sheirbheáil don chliant.

Tá trí imthosca ann ina ndéanfar TemplateResponse a thaispeáint:

  • Nuair a dhéantar an cás TemplateResponse a léiriú go sainráite, ag baint úsáide as an modh:meth: `SimpleTemplateResponse.render () `.

  • Nuair a shocraítear ábhar an fhreagra go sainráite trí freagra.content a shannadh.

  • Tar éis dul trí mheán-earraí freagartha teimpléad, ach sula dtéann sé trí mheán-earraí freagartha.

Ní féidir TemplateResponse a léiriú ach uair amháin. Socraíonn an chéad ghlao chuig:meth: SimpleTemplateResponse.render ábhar an fhreagra; ní athraíonn glaonna rindreála ina dhiaidh sin an t-ábhar freagartha.

Mar sin féin, nuair a shanntar response.content` go sainráite, cuirtear an t-athrú i bhfeidhm i gcónaí. Más mian leat iallach a chur ar an ábhar a athléiriú, is féidir leat an t-ábhar a rindreáiltear a athmheas, agus ábhar na freagartha a shannadh de láimh:

Python console
# Set up a rendered TemplateResponse
>>> from django.template.response import TemplateResponse
>>> t = TemplateResponse(request, "original.html", {})
>>> t.render()
>>> print(t.content)
Original content

# Re-rendering doesn't change content
>>> t.template_name = "new.html"
>>> t.render()
>>> print(t.content)
Original content

# Assigning content does change, no render() call required
>>> t.content = t.rendered_content
>>> print(t.content)
New content

Aisghlaonna iar-rindreálaLink to this heading

Ní féidir roinnt oibríochtaí - mar shampla caching - a dhéanamh ar theimpléad neamh-rindreáilte. Ní mór iad a dhéanamh ar fhreagra iomlán iomlán agus a rinneadh.

Má tá middleware á úsáid agat, is féidir leat é sin a dhéanamh. Soláthraíonn Middleware go leor deiseanna chun freagra a phróiseáil ar imeacht ó radharc. Má chuireann tú iompar sa mheán-earraí freagartha, ráthaítear go bhforghníomhaítear é tar éis rindreáil teimpléid a bheith tarlú.

Mar sin féin, má tá maisitheoir á úsáid agat, níl na deiseanna céanna ann. Láimhseálfar aon iompar a shainmhínítear i maisitheoir láithreach.

Chun cúiteamh as seo (agus aon chásanna úsáide comhchosúla eile), tugann :class: TemplateResponse deis duit aisghlaonna a chlárú a ghairmfear nuair a bheidh an rindreáil críochnaithe. Ag baint úsáide as an aisghlao seo, is féidir leat próiseáil chriticiúil a chur ar siar go dtí pointe inar féidir leat a ráthú go mbeidh ábhar rindreáilte ar fáil.

Chun glaonna iar-rindreála a shainiú, sainmhínigh feidhm a ghlacann argóint amháin - freagra - agus cláraigh an fheidhm sin leis an bhfreagra teimpléid:

Code
from django.template.response import TemplateResponse


def my_render_callback(response):
    # Do content-sensitive processing
    do_post_processing()


def my_view(request):
    # Create a response
    response = TemplateResponse(request, "mytemplate.html", {})
    # Register the callback
    response.add_post_render_callback(my_render_callback)
    # Return the response
    return response

Gairmfear my_render_callback () ``tar éis don `mytemplate.html a rindreáil, agus cuirfear an sampla iomlán:class: TemplateResponse ar fáil mar argóint.

Má rinneadh an teimpléad cheana féin, cuirfear an glaoch ar ais láithreach.

Ag baint úsáide as TemplateResponse agus SimpleTemplateResponseLink to this heading

A: aicme: Is féidir réad TemplateResponse a úsáid in áit ar féidir gnáth:class: django.http.httpResponse a úsáid. Is féidir é a úsáid freisin mar mhalairt ar glao:func: `~django.shortcuts.render () `.

Mar shampla, filleann an radharc seo a leanas a:class: TemplateResponse le teimpléad agus comhthéacs ina bhfuil tacar ceisteanna:

Code
from django.template.response import TemplateResponse


def blog_index(request):
    return TemplateResponse(
        request, "entry_list.html", {"entries": Entry.objects.all()}
    )