Conas cúltaca teimpléad saincheaptha a chur i bhfeidhmLink to this heading

Cúltaca saincheapthaLink to this heading

Seo conas cúltaca teimpléad saincheaptha a chur i bhfeidhm d'fhonn córas teimpléid eile a úsáid. Is aicme é cúltaca teimpléad a fhaigheann Django.Template.Backends.Base.BaseEngine oidhreachta. Caithfidh sé get_template () ``a chur i bhfeidhm agus ``from_string () roghnach. Seo sampla do leabharlann teimpléad ficseanúil foobar:

Code
from django.template import TemplateDoesNotExist, TemplateSyntaxError
from django.template.backends.base import BaseEngine
from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy

import foobar


class FooBar(BaseEngine):
    # Name of the subdirectory containing the templates for this engine
    # inside an installed application.
    app_dirname = "foobar"

    def __init__(self, params):
        params = params.copy()
        options = params.pop("OPTIONS").copy()
        super().__init__(params)

        self.engine = foobar.Engine(**options)

    def from_string(self, template_code):
        try:
            return Template(self.engine.from_string(template_code))
        except foobar.TemplateCompilationFailed as exc:
            raise TemplateSyntaxError(exc.args)

    def get_template(self, template_name):
        try:
            return Template(self.engine.get_template(template_name))
        except foobar.TemplateNotFound as exc:
            raise TemplateDoesNotExist(exc.args, backend=self)
        except foobar.TemplateCompilationFailed as exc:
            raise TemplateSyntaxError(exc.args)


class Template:
    def __init__(self, template):
        self.template = template

    def render(self, context=None, request=None):
        if context is None:
            context = {}
        if request is not None:
            context["request"] = request
            context["csrf_input"] = csrf_input_lazy(request)
            context["csrf_token"] = csrf_token_lazy(request)
        return self.template.render(context)

Féach DEP 182 le haghaidh tuilleadh eolais.

Comhtháthú dífhabhtaithe le haghaidh innillLink to this heading

Tá crúcaí ag an leathanach dífhabhtaithe Django chun faisnéis mhionsonraithe a sholáthar nuair a thagann earráid Is féidir le hinnill teimpléad saincheaptha na crúcaí seo a úsáid chun an fhaisnéis rianaithe a fheabhsaíonn d'úsáideoirí. Tá na crúcaí seo a leanas ar fáil:

Teimpléad iar-bháisLink to this heading

Feictear an post mortem nuair a ardaítear: exc: ~django.template.templateDoesNotExist. Liostaíonn sé na hinnill teimpléid agus na luchtóirí a úsáideadh agus iad ag iarraidh teimpléad ar leith a fháil. Mar shampla, má tá dhá innill Django cumraithe, beidh an post mortem le feiceáil mar:

/ga/6.0/_images/postmortem.png

Is féidir le hinnill saincheaptha an post mortem a líonadh trí na hargóintí backend agus tried a rith agus iad ag ardú: exc: ~django.template.templateDoesNotExist. <template-origin-api>Ba chóir go mbeadh cúltaca a úsáideann an postmortem:ref: `bunús 'a shonrú ar réad an teimpléid.

Faisnéis líne comhthéacsúilLink to this heading

Má tharlaíonn earráid le linn parsála nó rindreála teimpléad, is féidir le Django an líne a tharla an earráid air a thaispeáint. Mar shampla:

/ga/6.0/_images/template-lines.png

Is féidir le hinnill saincheaptha an fhaisnéis seo a líonadh trí thréith template_debug a shocrú ar eisceachtaí a ardaítear le linn parsála agus rindreála. Is é an tréith seo a: class: dict leis na luachanna seo a leanas:

  • ``ainm: Ainm an teimpléid inar tharla an eisceacht.

  • `'teachtaireacht e': An teachtaireacht eisceachta.

  • `'source_lines': Na línte roimh, tar éis, agus lena n-áirítear an líne a tharla an eisceacht air. Tá sé seo le haghaidh comhthéacs, mar sin níor chóir go mbeadh níos mó ná 20 líne nó mar sin ann.

  • 'líne ': An uimhir líne ar tharla an eisceacht.

  • `roimh: An t-ábhar ar an líne earráide roimh an comhartha a d'ardaigh an earráid.

  • ``le linn ': An comhartha a d'ardaigh an earráid.

  • ``tar éis ': An t-ábhar ar an líne earráide tar éis an chomhartha a d'ardaigh an earráid.

  • 'iomlán': Líon na línte i source_lines.

  • 'top': An uimhir líne ina dtosaíonn source_lines.

  • 'bottom': An uimhir líne ina gcríochnaíonn source_lines.

Mar gheall ar an earráid teimpléid thuas, bheadh cuma template_debug mar:

Code
{
    "name": "/path/to/template.html",
    "message": "Invalid block tag: 'syntax'",
    "source_lines": [
        (1, "some\n"),
        (2, "lines\n"),
        (3, "before\n"),
        (4, "Hello {% syntax error %} {{ world }}\n"),
        (5, "some\n"),
        (6, "lines\n"),
        (7, "after\n"),
        (8, ""),
    ],
    "line": 4,
    "before": "Hello ",
    "during": "{% syntax error %}",
    "after": " {{ world }}\n",
    "total": 9,
    "bottom": 9,
    "top": 1,
}

API Origin agus comhtháthú 3ú páirtíLink to this heading

Tá réad: class: ~django.template.base.origin ag teimpléid Django ar fáil tríd an tréith template.origin. <django-debug-toolbar>Cuireann sé seo ar chumas faisnéis dífhabhtaithe a thaispeáint in:ref: template postmortem <template-postmortem>, chomh maith le leabharlanna 3ú páirtí, cosúil leis an: pypi: Django Debug Toolbar.

Is féidir le hinnill saincheaptha a gcuid faisnéise ``template.origin` féin a sholáthar trí réad a chruthú a shonraíonn na tréithe seo a leanas:

  • ``ainm: An cosán iomlán chuig an teimpléad.

  • 'template_name': An cosán coibhneasta chuig an teimpléad mar a chuirtear isteach sna modhanna luchtaithe teimpléad.

  • `loader_name': Sreang roghnach a aithníonn an fheidhm nó an rang a úsáidtear chun an teimpléad a luchtú, m.sh. Django.Template.Loaders.FileSystem.Loader`.