{"title":"Meán-earraí","version":"6.1","locale":"ga","docname":"topics/http/middleware","url":"/ga/6.1/topics/http/middleware/","canonical":"https://djangodocs.dev/ga/6.1/topics/http/middleware/","summary":"Is creat crúcaí é Middleware i bpróiseáil iarrata/freagartha Django. Is córas “breiseán” éadrom, ar leibhéal íseal é chun ionchur nó aschur Django a athrú go…","html":"<h1>Meán-earraí<a class=\"heading-anchor\" href=\"#middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is creat crúcaí é Middleware i bpróiseáil iarrata/freagartha Django. Is córas “breiseán” éadrom, ar leibhéal íseal é chun ionchur nó aschur Django a athrú go domhanda.</p>\n<p>Tá gach comhpháirt middleware freagrach as feidhm ar leith a dhéanamh. Mar shampla, cuimsíonn Django comhpháirt middleware, :class: ~django.contrib.auth.middleware.AuthenticationMiddleware, a chomhcheanglaíonn úsáideoirí le hiarratais ag baint úsáide as seisiúin.</p>\n<p>Míníonn an doiciméad seo conas a oibríonn middleware, conas a ghníomhachaíonn tú middleware, agus conas do mheánware féin a scríobh. Loingíonn Django le roinnt earraí lárnacha ionsuite is féidir leat a úsáid díreach as an mbosca. Tá siad doiciméadaithe san: doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>tagairt middleware ionsuite '&lt;/ref/middleware&gt;.</p>\n<section id=\"writing-your-own-middleware\">\n<h2>Do mheán-earraí féin a scríobh<a class=\"heading-anchor\" href=\"#writing-your-own-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is é monarcha earraí meánghlaoithe a thógann glaoch <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code> agus a thugann middleware ar ais. Is féidir glaoch é middleware a ghlacann iarratas agus a thugann freagra ar ais, díreach cosúil le radharc.</p>\n<p>Is féidir middleware a scríobh mar fheidhm a bhfuil cuma seo air:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">simple_middleware</span><span class=\"p\">(</span><span class=\"n\">get_response</span><span class=\"p\">):</span>\n    <span class=\"c1\"># One-time configuration and initialization.</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">middleware</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Code to be executed for each request before</span>\n        <span class=\"c1\"># the view (and later middleware) are called.</span>\n\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Code to be executed for each request/response after</span>\n        <span class=\"c1\"># the view is called.</span>\n\n        <span class=\"k\">return</span> <span class=\"n\">response</span>\n\n    <span class=\"k\">return</span> <span class=\"n\">middleware</span>\n</code></pre></div>\n<p>Nó is féidir é a scríobh mar rang a bhfuil a gcásanna inghlaonta, mar seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">SimpleMiddleware</span><span class=\"p\">:</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">get_response</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span>\n        <span class=\"c1\"># One-time configuration and initialization.</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__call__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Code to be executed for each request before</span>\n        <span class=\"c1\"># the view (and later middleware) are called.</span>\n\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Code to be executed for each request/response after</span>\n        <span class=\"c1\"># the view is called.</span>\n\n        <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>D'fhéadfadh gurb é an glaoch <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code> a sholáthraíonn Django an dearcadh iarbhír (más é seo an middleware liostaithe deireanach) nó d'fhéadfadh gurb é an chéad lár-earraí eile sa slabhra é. Ní gá don mheán-earraí reatha a bheith ar an eolas nó aire a thabhairt cad é go díreach é, ach go léiríonn sé cibé rud a thagann ina dhiaidh sin.</p>\n<p>&lt;template-response-middleware&gt;&lt;exception-middleware&gt;Is simplíocht bheag é an méid thuas - ní é an get_response` a ghlaoch don mheán deireanach sa slabhra an dearcadh iarbhír ach modh fillte ón láimhseálaí a thugann aire d'iarrat:ref: view middleware `, ag glaoch an dearcadh le hargóintí URL cuí, agus iarrth:ref: `teimplé-response agus:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>eisceacht &lt;view-middleware&gt;`middleware.</p>\n<p>Ní féidir le Middleware tacú le Python sioncronach amháin (an réamhshocraithe), ach Python asincrónach, nó an dá cheann. Féach: ref: async-middleware le haghaidh sonraí faoin méid a thacaíonn tú a fhógairt, agus a fhios agat cén cineál iarratais atá á fháil agat.</p>\n<p>Is féidir le middleware maireachtáil áit ar bith ar do chonair Python.</p>\n<section id=\"init-get-response\">\n<h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ (faigh_response) ``<a class=\"heading-anchor\" href=\"#init-get-response\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Caithfidh monarchana middleware glacadh le hargóint <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code>. Is féidir leat stát dhomhanda éigin a thionscnamh don middleware freisin. Coinnigh i gcuimhne cúpla rabhadh:</p>\n<ul class=\"simple\">\n<li><p>Cuireann Django tús le do middleware gan ach an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code>, mar sin ní féidir leat <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a shainiú mar a theastaíonn aon argóintí eile.</p></li>\n<li><p>Murab ionann agus an modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__call__</span> <span class=\"pre\">()</span> <span class=\"pre\">``ar</span> <span class=\"pre\">a</span> <span class=\"pre\">dtugtar</span> <span class=\"pre\">uair</span> <span class=\"pre\">amháin</span> <span class=\"pre\">in</span> <span class=\"pre\">aghaidh</span> <span class=\"pre\">an</span> <span class=\"pre\">iarratais,</span> <span class=\"pre\">ní</span> <span class=\"pre\">thugtar</span> <span class=\"pre\">``__init__</span> <span class=\"pre\">()</span></code> ach <em>uaire</em>, nuair a thosaíonn an freastalaí gréasáin.</p></li>\n</ul>\n</section>\n<section id=\"marking-middleware-as-unused\">\n<h3>Meán-earraí a mharcáil mar neamhúsá<a class=\"heading-anchor\" href=\"#marking-middleware-as-unused\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Uaireanta bíonn sé úsáideach a chinneadh ag am tosaithe an gcaithfear píosa meán-earraí a úsáid. Sna cásanna seo, féadfaidh modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span> <span class=\"pre\">()</span> <span class=\"pre\">``do</span> <span class=\"pre\">middleware</span> <span class=\"pre\">a</span> <span class=\"pre\">ardó:exc:</span> <span class=\"pre\">`~django.core.exceptions.middlewareNotUsed`.</span> <span class=\"pre\">Ansin</span> <span class=\"pre\">bainfidh</span> <span class=\"pre\">Django</span> <span class=\"pre\">an</span> <span class=\"pre\">middleware</span> <span class=\"pre\">sin</span> <span class=\"pre\">ón</span> <span class=\"pre\">bpróiseas</span> <span class=\"pre\">middleware</span> <span class=\"pre\">agus</span> <span class=\"pre\">logálfaidh</span> <span class=\"pre\">teachtaireacht</span> <span class=\"pre\">dífhabhtaithe</span> <span class=\"pre\">chuig</span> <span class=\"pre\">an</span> <span class=\"pre\">logger:</span> <span class=\"pre\">ref:</span> <span class=\"pre\">`django-request-logger`</span> <span class=\"pre\">nuai:setting:</span> <span class=\"pre\">`DEBUG`</span> <span class=\"pre\">``True</span></code>.</p>\n</section>\n</section>\n<section id=\"activating-middleware\">\n<h2>Middleware a ghníomhachtú<a class=\"heading-anchor\" href=\"#activating-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Chun comhpháirt middleware a ghníomhachtú, cuir é leis an liosta:setting: MIDDLEWARE i do shocruithe Django.</p>\n<p>In: SETTING: MIDDLEWARE, léiríonn teaghrán gach comhpháirt middleware: an cosán iomlán Python chuig ainm ranga nó feidhm an mhonarcha middleware. &lt;startproject&gt;Mar shampla, seo an luach réamhshocraithe a chruthaí:djadmin: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>django-admin startproject <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">MIDDLEWARE</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s2\">&quot;django.middleware.security.SecurityMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.contrib.sessions.middleware.SessionMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.middleware.common.CommonMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.middleware.csrf.CsrfViewMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.contrib.auth.middleware.AuthenticationMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.contrib.messages.middleware.MessageMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.middleware.clickjacking.XFrameOptionsMiddleware&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Ní theastaíonn aon middleware ó shuiteáil Django -: setting: Is féidir le MIDDLEWARE a bheith folamh, más mian leat - ach moltar go láidir go n-úsáideann tú: class: ~django.middleware.common.commonMiddleware ar a laghad.</p>\n<p>Tá tábhacht ag an ordú in:setting: MIDDLEWARE toisc gur féidir le middleware a bheith ag brath ar mheán-earraí eile. Mar shampla, stóráilíonn :class: ~django.contrib.auth.middleware.AuthenticationMiddleWare an t-úsáideoir fíordheimhnithe sa seisiún; dá bhrí sin, ní mór dó rith tar éis: :class: ~django.contrib.sessions.middleware.sessionMiddleware. Féach: ref: middleware-ording le haghaidh roinnt leideanna coitianta maidir le ranganna meán-earraí Django a ordú.</p>\n</section>\n<section id=\"middleware-order-and-layering\">\n<h2>Ordú agus sraitheadh lár-earraí<a class=\"heading-anchor\" href=\"#middleware-order-and-layering\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Le linn na céime iarratais, sula nglaonn sé ar an radharc, cuireann Django middleware i bhfeidhm san ord a shainmhínítear é in:setting: MIDDLEWARE, barr anuas.</p>\n<p>Is féidir leat smaoineamh air mar oinniún: is “ciseal” é gach rang middleware a fhilleann an radharc, atá i gcroílár an oinniúin. Má théann an t-iarratas trí na sraitheanna uile den oinniún (glaonn gach ceann ar <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code> chun an t-iarratas a chur isteach chuig an gcéad chiseal eile), an bealach ar fad go dtí an radharc ag croílár, rachaidh an freagra ansin trí gach sraith (in ord droim) ar an mbealach ar ais amach.</p>\n<p>Má chinneann ceann de na sraitheanna gearrchiorcad a dhéanamh agus freagra a thabhairt ar ais gan a get_response` a ghlaoch riamh, ní fheicfidh aon cheann de na sraitheanna den oinniún taobh istigh den chiseal sin (lena n-áirítear an radharc) an iarraidh ná an freagra. Ní thabharfaidh an freagra ar ais ach tríd na sraitheanna céanna a chuir an t-iarratas isteach tríd.</p>\n</section>\n<section id=\"other-middleware-hooks\">\n<h2>Crúcaí meán-earraí eile<a class=\"heading-anchor\" href=\"#other-middleware-hooks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Chomh maith leis an bpatrún lár-earraí iarrata/freagartha bunúsach a thuairiscítear níos luaithe, is féidir leat trí mhodh speisialta eile a chur le middleware rang-bhunaithe:</p>\n<section id=\"process-view\">\n<span id=\"view-middleware\"></span><h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>próise_amharc () ``<a class=\"heading-anchor\" href=\"#process-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"process_view\">\n<span class=\"sig-name descname\"><span class=\"pre\">process_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view_func</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view_args</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#process_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is é <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> ná: aicme: ~django.http.httpRequest réad. Is é <code class=\"docutils literal notranslate\"><span class=\"pre\">view_func</span></code> an fheidhm Python atá ar tí Django a úsáid. (Is é an réad feidhme iarbhír é, ní ainm na feidhme mar shreang.) Is liosta d'argóintí seasaimh é <code class=\"docutils literal notranslate\"><span class=\"pre\">view_args</span></code> a chuirfear ar aghaidh chuig an dearcadh, agus is foclóir argóintí eochairfhocal é <code class=\"docutils literal notranslate\"><span class=\"pre\">view_kwargs</span></code> a chuirfear chuig an dearcadh. Ní chuimsíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">view_args</span></code> ná view_kwargs` an argóint chéad amharc (<code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code>).</p>\n<p>Tugtar ar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>process_view () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>díreach sula nglaonn Django ar an radharc.</p>\n<p>Ba chóir dó réad <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> nó an:class: ~django.http.httpResponse a thabhairt ar ais. Má fhilleann sé <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span> <span class=\"pre\">``,</span> <span class=\"pre\">leanfaidh</span> <span class=\"pre\">Django</span> <span class=\"pre\">ar</span> <span class=\"pre\">aghaidh</span> <span class=\"pre\">ag</span> <span class=\"pre\">próiseáil</span> <span class=\"pre\">an</span> <span class=\"pre\">iarratais</span> <span class=\"pre\">seo,</span> <span class=\"pre\">ag</span> <span class=\"pre\">forghníomhú</span> <span class=\"pre\">aon</span> <span class=\"pre\">mheánware</span> <span class=\"pre\">``process_view</span> <span class=\"pre\">()</span></code> eile agus, ansin, an dearcadh cuí. Má fhilleann sé ruda:class: ~django.http.httpResponse réad, ní chuirfidh Django isteach ar an radharc cuí a ghlaoch; cuirfidh sé middleware freagartha i bhfeidhm ar ain:class: ~django.http.httpResponse agus cuirfidh sé an toradh ar ais.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>&lt;modifying_upload_handlers_on_the_fly&gt;Accessing:attr: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Request.post &lt;django.http.HttpRequest.POST&gt;`taobh istigh de mheán-earraí sula ritheann an radharc nó i <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>process_view () <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>cosc ar aon radharc atá ag rith tar éis an middleware a bheith in ann: ref: <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>na láimhseálaithe uaslódála don iarraidh a mhodhnú, agus ba chóir é a sheachaint de ghnáth.</p>\n<p>Is féidir an rang:Class: ~django.middleware.csrf.csrfviewMiddleware a mheas ina eisceacht, toisc go soláthraíonn sé na:func: ~django.views.decorators.csrf.csrf_exempt agus:func: ~django.views.decorators.csrf.csrf_protect a cheadaíonn tuairimí go sainráite rialú ag cén pointe ba chóir go dtarlódh bailíochtú CSRF.</p>\n</aside>\n</section>\n<section id=\"process-exception\">\n<span id=\"exception-middleware\"></span><h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>próise_eisceacht () ``<a class=\"heading-anchor\" href=\"#process-exception\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"process_exception\">\n<span class=\"sig-name descname\"><span class=\"pre\">process_exception</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exception</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#process_exception\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is é <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> ná: aicme: ~django.http.httpRequest réad. Is réad <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>Eisceacht' é <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>eisceacht' a ardaíonn an fheidhm amharc.</p>\n<p>Glaonn Django ar <code class=\"docutils literal notranslate\"><span class=\"pre\">process_exception</span> <span class=\"pre\">()</span> <span class=\"pre\">``nuair</span> <span class=\"pre\">a</span> <span class=\"pre\">ardaíonn</span> <span class=\"pre\">dearcadh</span> <span class=\"pre\">eisceacht.</span> <span class=\"pre\">Ba</span> <span class=\"pre\">chóir</span> <span class=\"pre\">go</span> <span class=\"pre\">bhfaighidh</span> <span class=\"pre\">``process_exception</span> <span class=\"pre\">()</span> <span class=\"pre\">``réad</span> <span class=\"pre\">``None</span></code> nó ruda:class: ~django.http.httpResponse a thabhairt ar ais. Má fhilleann sé ruda:class: ~django.http.httpResponse réad, cuirfear an freagra teimpléid agus an lámhleabhair freagartha i bhfeidhm agus cuirfear an freagra mar thoradh air sin ar ais chuig an mbrabhsálaí. Seachas sin, tosaíonn :ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>láimhseáil eisceachta réamhshocrai &lt;error-views&gt;the <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>isteach.</p>\n<p>Arís, reáchtáiltear middleware in ord droim le linn na céime freagartha, lena n-áirítear <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>process_exception`. Má thugann meán-earraí eisceachta freagra ar ais, ní ghlaofar ar chor ar chor ar bith ar na modhanna process_exception de na ranganna middleware thuas an middleware sin.</p>\n</section>\n<section id=\"process-template-response\">\n<span id=\"template-response-middleware\"></span><h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>próise_teimpléad_fhreagra () ``<a class=\"heading-anchor\" href=\"#process-template-response\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"process_template_response\">\n<span class=\"sig-name descname\"><span class=\"pre\">process_template_response</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#process_template_response\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is é <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> ná: aicme: ~django.http.httpRequest réad. Is é freagra ``an réad: :class: `~django.template.response.templateResponse réad (nó coibhéis) a chuirtear ar ais ag radharc Django nó ag middleware.</p>\n<p>Tugtar <code class=\"docutils literal notranslate\"><span class=\"pre\">process_template_response</span> <span class=\"pre\">()</span> <span class=\"pre\">``díreach</span> <span class=\"pre\">tar</span> <span class=\"pre\">éis</span> <span class=\"pre\">don</span> <span class=\"pre\">amharc</span> <span class=\"pre\">a</span> <span class=\"pre\">bheith</span> <span class=\"pre\">críochnaithe</span> <span class=\"pre\">a</span> <span class=\"pre\">chur</span> <span class=\"pre\">i</span> <span class=\"pre\">bhfeidhm,</span> <span class=\"pre\">má</span> <span class=\"pre\">tá</span> <span class=\"pre\">modh</span> <span class=\"pre\">`render</span> <span class=\"pre\">()</span></code> ag an gcás freagartha, ag léiriú gurb é a:class: ~django.template.response.templateResponse nó coibhéiseach.</p>\n<p>Caithfidh sé réad freagartha a thabhairt ar ais a chuireann modh render` i bhfeidhm. D'fhéadfadh sé an <code class=\"docutils literal notranslate\"><span class=\"pre\">freagra</span></code> a athrú trí response.template_name` agus response.context_data` a athrú, nó d'fhéadfadh sé branda nua:class: ~django.template.response.templateResponse nó coibhéis a chruthú agus a thabhairt ar ais.</p>\n<p>Ní gá duit freagraí a thabhairt go sainráite - déanfar freagraí a thabhairt go huathoibríoch nuair a bheidh meán-earraí freagartha teimpléid uile glaoch.</p>\n<p>Reáchtáiltear middleware in ord droim le linn na céime freagartha, lena n-áirítear <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>process_template_response () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</section>\n</section>\n<section id=\"dealing-with-streaming-responses\">\n<h2>Déileáil le freagraí sruthú<a class=\"heading-anchor\" href=\"#dealing-with-streaming-responses\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Unlike:class: ~django.http.httpResponse, :class: ~django.http.níl tréith ``content` ag ~django.http.StreamInghttPresponse. Mar thoradh air sin, ní féidir le middleware glacadh leis a thuilleadh go mbeidh tréith <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ábhar <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ag gach freagra. Má theastaíonn rochtain uathu ar an ábhar, ní mór dóibh freagraí sruthú a thástáil agus a n-iompar a choigeartú dá réir:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">streaming</span><span class=\"p\">:</span>\n    <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">streaming_content</span> <span class=\"o\">=</span> <span class=\"n\">wrap_streaming_content</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">streaming_content</span><span class=\"p\">)</span>\n<span class=\"k\">else</span><span class=\"p\">:</span>\n    <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">content</span> <span class=\"o\">=</span> <span class=\"n\">alter_content</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">content</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Ba chóir glacadh leis go bhfuil streaming_content` ró-mhór le coinneáil i gcuimhne. Féadfaidh meán-earraí freagartha é a fhilleadh i ngineadóir nua, ach níor cheart dó é a ithe. Is iondúil go gcuirtear timfhilleadh i bhfeidhm mar seo</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">wrap_streaming_content</span><span class=\"p\">(</span><span class=\"n\">content</span><span class=\"p\">):</span>\n    <span class=\"k\">for</span> <span class=\"n\">chunk</span> <span class=\"ow\">in</span> <span class=\"n\">content</span><span class=\"p\">:</span>\n        <span class=\"k\">yield</span> <span class=\"n\">alter_content</span><span class=\"p\">(</span><span class=\"n\">chunk</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<p><a class=\"reference internal\" href=\"/ga/6.1/ref/request-response/#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a> allows both synchronous and\nasynchronous iterators. The wrapping function must match. Check\n<a class=\"reference internal\" href=\"/ga/6.1/ref/request-response/#django.http.StreamingHttpResponse.is_async\" title=\"django.http.StreamingHttpResponse.is_async\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse.is_async</span></code></a> if your middleware needs to\nsupport both types of iterator.</p>\n</section>\n<section id=\"exception-handling\">\n<h2>Láimhseáil eisce<a class=\"heading-anchor\" href=\"#exception-handling\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Athraíonn Django eisceachtaí arna ardú ag an radharc nó ag middleware go huathoibríoch ina fhreagairt HTTP cuí le cód stádais earráide. :ref: Déantar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>eisceachtaí áirithe &lt;error-views&gt;`a thiontú go cóid stádais 4xx, agus déantar eisceacht anaithnid a thiontú go cód stádais 500.</p>\n<p>Tarlaíonn an tiontú seo roimh agus tar éis gach middleware (is féidir leat smaoineamh air mar an scannán tanaí idir gach sraith den oinniún), ionas gur féidir le gach middleware brath i gcónaí ar chineál éigin freagra HTTP a fháil ar ais ó a get_response` glaoch inghlaonta. Ní gá go mbeadh buartha a bheith buartha faoi a nglao chuig get_response` a fhilleadh i triacht/except` agus eisceacht a d'fhéadfadh a bheith ardaithe ag middleware nó an dearcadh níos déanaí a láimhseáil. Fiú má ardaíonn an chéad earraí eile sa slabhra eisceacht: Class: ~django.http.http404, mar shampla, ní fheicfidh do mheán-earraí an eisceacht sin; ina ionad sin gheobhaidh sé réad: ~django.http.http.httpResponse le a:attr: ~django.http.http.http.code de 404.</p>\n<p>Is féidir leat socrú:setting: DEBUG_PROPAGATE_EXCEPTIONS go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> chun an tiontú seo a scipeáil agus eisceachtaí a iomadú aníos.</p>\n</section>\n<section id=\"asynchronous-support\">\n<span id=\"async-middleware\"></span><h2>Tacaíocht asincrónach<a class=\"heading-anchor\" href=\"#asynchronous-support\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is féidir le Middleware tacú le haon teaglaim d'iarratais sioncrónach agus asincrónach. Cuirfidh Django iarratais in oiriúint chun freastal ar riachtanais an middleware mura féidir leis tacú leis an dá cheann, ach ag pionós feidhmíochta.</p>\n<p>De réir réamhshocraithe, glacann Django leis nach bhfuil do middleware in ann ach iarratais sioncrónacha a láimhseáil. Chun na toimhdeanna seo a athrú, socraigh na tréithe seo a leanas ar do fheidhm nó rang monarchan middleware:</p>\n<ul class=\"simple\">\n<li><p>Is boolean é <code class=\"docutils literal notranslate\"><span class=\"pre\">sync_capable</span></code> a thugann le fios an féidir leis an meán-earraí iarratais sioncrónach a láimhseáil. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p></li>\n<li><p>Is boolean é async_capable` a thugann le fios an féidir leis an meán-earraí iarratais asincrónacha a láimhseáil. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n</ul>\n<p>If your middleware has both <code class=\"docutils literal notranslate\"><span class=\"pre\">sync_capable</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">async_capable</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>, then Django will pass it the request without\nconverting it. In this case, you can work out if your middleware will receive\nasync requests by checking if the <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code> object you are passed is a\ncoroutine function, using <code class=\"docutils literal notranslate\"><span class=\"pre\">inspect.iscoroutinefunction</span></code>.</p>\n<p>Tá an modúl <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.utils.decorators <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>: func: ~django.utils.decorators.sync_only_middleware, :func: ~django.utils.decorators.async_only_middleware, agus:func: <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>~django.utils.decorators.sync_and_async_middleware' <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>maisitheoirí a ligeann duit na bratacha seo a chur i bhfeidhm ar fheidhmeanna monarchan meánearraí.</p>\n<p>Caithfidh an t-inghlaoch a fhilleadh a mheaitseáil le nádúr sioncrónaithe nó async an mhodha <code class=\"docutils literal notranslate\"><span class=\"pre\">get_response</span></code>. Má tá get_response` asincrónach agat, ní mór duit feidhm coroutine a thabhairt ar ais (<code class=\"docutils literal notranslate\"><span class=\"pre\">async</span> <span class=\"pre\">def</span></code>).</p>\n<p>Ba chóir modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">process_view</span></code>, process_template_response` agus <code class=\"docutils literal notranslate\"><span class=\"pre\">process_exception</span></code>, má chuirtear ar fáil iad, a oiriúnú freisin chun an modh sionc/async a mheaitseáil. Mar sin féin, déanfaidh Django iad a oiriúnú ina n-aonar de réir mar is gá mura ndéanann tú, ag pionós feidhmíochta breise.</p>\n<p>Seo sampla de conas feidhm middleware a chruthú a thacaíonn leis an dá cheann:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">inspect</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">iscoroutinefunction</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.decorators</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sync_and_async_middleware</span>\n\n\n<span class=\"nd\">@sync_and_async_middleware</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">simple_middleware</span><span class=\"p\">(</span><span class=\"n\">get_response</span><span class=\"p\">):</span>\n    <span class=\"c1\"># One-time configuration and initialization goes here.</span>\n    <span class=\"k\">if</span> <span class=\"n\">iscoroutinefunction</span><span class=\"p\">(</span><span class=\"n\">get_response</span><span class=\"p\">):</span>\n\n        <span class=\"k\">async</span> <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">middleware</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n            <span class=\"c1\"># Do something here!</span>\n            <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"k\">await</span> <span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n            <span class=\"k\">return</span> <span class=\"n\">response</span>\n\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n\n        <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">middleware</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n            <span class=\"c1\"># Do something here!</span>\n            <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n            <span class=\"k\">return</span> <span class=\"n\">response</span>\n\n    <span class=\"k\">return</span> <span class=\"n\">middleware</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Má dhearbhíonn tú meán-earraí hibrideach a thacaíonn le glaonna sioncrónacha agus asincrónacha araon, b'fhéidir nach n-oireann an cineál glaonna a gheobhaidh tú leis an radharc bunúsach. Déanfaidh Django an staca glaonna middleware a bharrfheabhsú chun an oiread aistrithe sionc/async agus is féidir a bheith aige.</p>\n<p>Dá bhrí sin, fiú má tá radharc async á fhilleadh agat, féadfar glaoch ort i mód sioncrónaithe má tá meán-earraí sioncrónach eile idir tú féin agus an radharc.</p>\n</aside>\n<p>Agus meán-earraí aicme asincrónach á úsáid agat, ní mór duit a chinntiú go ndéantar cásanna a mharcáil i gceart mar fheidhmeanna coroutine:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">inspect</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">iscoroutinefunction</span><span class=\"p\">,</span> <span class=\"n\">markcoroutinefunction</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AsyncMiddleware</span><span class=\"p\">:</span>\n    <span class=\"n\">async_capable</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n    <span class=\"n\">sync_capable</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">get_response</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span>\n        <span class=\"k\">if</span> <span class=\"n\">iscoroutinefunction</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span><span class=\"p\">):</span>\n            <span class=\"n\">markcoroutinefunction</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">)</span>\n\n    <span class=\"k\">async</span> <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__call__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"k\">await</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n        <span class=\"c1\"># Some logic ...</span>\n        <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n</section>\n<section id=\"upgrading-pre-django-1-10-style-middleware\">\n<span id=\"upgrading-middleware\"></span><h2>Meán-earraí i stíl réamh-Django 1.10 a uasghrádú<a class=\"heading-anchor\" href=\"#upgrading-pre-django-1-10-style-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.deprecation.MiddlewareMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.utils.deprecation.</span></span><span class=\"sig-name descname\"><span class=\"pre\">MiddlewareMixin</span></span><a class=\"heading-anchor\" href=\"#django.utils.deprecation.MiddlewareMixin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Soláthraíonn Django <code class=\"docutils literal notranslate\"><span class=\"pre\">Django.Utils.DEPRECATION.MIDDLEWAREMIXIN</span></code> chun ranganna middleware a chruthú atá comhoiriúnach leis an mbeach:setting: MIDDLEWARE agus an sean-<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>MIDDLEWARE_CLASSES` a éascú, agus tacú le hiarratais sioncrónach agus asincrónach. Tá gach rang middleware atá san áireamh le Django comhoiriúnach leis an dá shocrú.</p>\n<p>Soláthraíonn an mixin modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">éilíonn</span> <span class=\"pre\">argóint</span> <span class=\"pre\">``get_response</span></code> agus a stóráilíonn sé i <code class=\"docutils literal notranslate\"><span class=\"pre\">self.get_response</span></code>.</p>\n<p>An modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__call__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>:</p>\n<ol class=\"arabic simple\">\n<li><p>Glaonna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>self.process_request (request) <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>(má shainmhínítear).</p></li>\n<li><p>Glaonna ar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>self.get_response (request) <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>chun an freagra a fháil ó mheán-earraí níos déanaí agus an radharc.</p></li>\n<li><p>Glaonna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>self.process_response (iarratas, freagra) <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>(má shainmhínítear).</p></li>\n<li><p>Tugann an freagra ar ais.</p></li>\n</ol>\n<p>Má úsáidtear é le MIDDLEWARE_CLASSES`, ní úsáidfear an modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__call__</span> <span class=\"pre\">()</span> <span class=\"pre\">``riamh;</span> <span class=\"pre\">glaonn</span> <span class=\"pre\">Django</span> <span class=\"pre\">``process_request</span> <span class=\"pre\">()</span></code> agus <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>process_response () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>go díreach.</p>\n<p>I bhformhór na gcásanna, is leor oidhreacht ón meascán seo chun meán-earraí sean-stíl a dhéanamh comhoiriúnach leis an gcóras nua le comhoiriúnacht leordhóthanach cúl. Beidh an séimeantaic gearrchiorcaid nua neamhdhíobhálach nó fiú tairbheach don mheán-earraí atá ann cheana. I gcúpla cás, b'fhéidir go mbeadh roinnt athruithe ag teastáil ó rang middleware chun dul in oiriúint don shéimeantaic nua.</p>\n<p>Seo iad na difríochtaí iompraíochta idir úsáid: setting: MIDDLEWARE agus MIDDLEWARE_CLASSES`:</p>\n<ol class=\"arabic simple\">\n<li><p>Faoi <code class=\"docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE_CLASSES</span></code>, beidh a mhodh process_response` ag gach middleware i gcónaí, fiú má ghearrchiorcáladh meán-earraí níos luaithe trí fhreagra a thabhairt ar ais óna mhodh <code class=\"docutils literal notranslate\"><span class=\"pre\">process_request</span></code>. Faoi: Socrú: MIDDLEWARE, iompraíonn middleware níos cosúil le oinniún: is iad na sraitheanna a théann freagra tríd ar an mbealach amach na sraitheanna céanna a chonaic an t-iarratas ar an mbealach isteach. Má tá gearrchiorcaid lár-earraí ann, ní fheicfidh an freagra ach an middleware sin agus na cinn roimh i:setting: MIDDLEWARE.</p></li>\n<li><p>Faoi <code class=\"docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE_CLASSES</span></code>, cuirtear process_exception` i bhfeidhm ar eisceachtaí a ardaítear ó mhodh process_request` middleware. Fao:SETTING: MIDDLEWARE, ní bhaineann <code class=\"docutils literal notranslate\"><span class=\"pre\">process_exception</span></code> ach le heisceachtaí a ardaíodh ón radharc (nó ón modh <code class=\"docutils literal notranslate\"><span class=\"pre\">render</span></code> de a:class: ~django.template.response.templateResponse). Déantar eisceachtaí a ardaítear ó mheán-earraí a thiontú go dtí an freagra HTTP cuí agus ansin cuirtear ar aghaidh chuig an chéad mheán-earraí eile.</p></li>\n<li><p>Faoi MIDDLEWARE_CLASSES`, má ardaíonn modh <code class=\"docutils literal notranslate\"><span class=\"pre\">process_response</span></code> eisceacht, scipeántar modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">process_response</span></code> gach middleware roimhe seo agus cuirtear freagra HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">500</span> <span class=\"pre\">Inmheánach</span> <span class=\"pre\">Freastala</span></code> ar ais i gcónaí (fiú má bhí an eisceacht m.sh:class: ~django.http.http404). Fao:SETTING: MIDDLEWARE, tionófar eisceacht a ardaíodh ó mheán-earraí láithreach go dtí an freagra HTTP cuí, agus ansin feicfidh an chéad mheán-earraí eile atá i líne an freagra sin. Ní scipeántar Middleware riamh mar gheall ar mheán-earraí a ardaíonn eisceacht.</p></li>\n</ol>\n</section>","rootId":"middleware","toc":[{"title":"Do mheán-earraí féin a scríobh","anchor":"writing-your-own-middleware","children":[{"title":"``__init__ (faigh_response) ``","anchor":"init-get-response","children":[]},{"title":"Meán-earraí a mharcáil mar neamhúsá","anchor":"marking-middleware-as-unused","children":[]}]},{"title":"Middleware a ghníomhachtú","anchor":"activating-middleware","children":[]},{"title":"Ordú agus sraitheadh lár-earraí","anchor":"middleware-order-and-layering","children":[]},{"title":"Crúcaí meán-earraí eile","anchor":"other-middleware-hooks","children":[{"title":"``próise_amharc () ``","anchor":"process-view","children":[]},{"title":"``próise_eisceacht () ``","anchor":"process-exception","children":[]},{"title":"``próise_teimpléad_fhreagra () ``","anchor":"process-template-response","children":[]}]},{"title":"Déileáil le freagraí sruthú","anchor":"dealing-with-streaming-responses","children":[]},{"title":"Láimhseáil eisce","anchor":"exception-handling","children":[]},{"title":"Tacaíocht asincrónach","anchor":"asynchronous-support","children":[]},{"title":"Meán-earraí i stíl réamh-Django 1.10 a uasghrádú","anchor":"upgrading-pre-django-1-10-style-middleware","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.1/topics/"},{"docname":"topics/http/index","title":"Láimhseáil iarratais HTTP","url":"/ga/6.1/topics/http/"}],"prev":{"docname":"topics/http/generic-views","title":"Tuairimí cineálacha","url":"/ga/6.1/topics/http/generic-views/"},"next":{"docname":"topics/http/sessions","title":"Conas seisiúin a úsáid","url":"/ga/6.1/topics/http/sessions/"},"formats":{"html":"/ga/6.1/topics/http/middleware/","markdown":"/ga/6.1/topics/http/middleware.md","json":"/ga/6.1/topics/http/middleware.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/topics/http/middleware.txt","official":"https://docs.djangoproject.com/ga/6.1/topics/http/middleware/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}