{"title":"Próiseáil Amharc Coinníoll","version":"6.0","locale":"ga","docname":"topics/conditional-view-processing","url":"/ga/6.0/topics/conditional-view-processing/","canonical":"https://djangodocs.dev/ga/6.0/topics/conditional-view-processing/","summary":"Is féidir le cliaint HTTP roinnt ceanntásca a sheoladh chun insint don fhreastalaí faoi chóipeanna d'acmhainn a chonaic siad cheana féin. Úsáidtear é seo go…","html":"<h1>Próiseáil Amharc Coinníoll<a class=\"heading-anchor\" href=\"#conditional-view-processing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is féidir le cliaint HTTP roinnt ceanntásca a sheoladh chun insint don fhreastalaí faoi chóipeanna d'acmhainn a chonaic siad cheana féin. Úsáidtear é seo go coitianta agus leathanach gréasáin á aisghabháil (ag baint úsáide as iarratas HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span> <span class=\"pre\">``)</span> <span class=\"pre\">chun</span> <span class=\"pre\">na</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">go</span> <span class=\"pre\">léir</span> <span class=\"pre\">a</span> <span class=\"pre\">sheachaint</span> <span class=\"pre\">le</span> <span class=\"pre\">haghaidh</span> <span class=\"pre\">rud</span> <span class=\"pre\">atá</span> <span class=\"pre\">aisghabháilte</span> <span class=\"pre\">an</span> <span class=\"pre\">cliant</span> <span class=\"pre\">cheana</span> <span class=\"pre\">féin.</span> <span class=\"pre\">Mar</span> <span class=\"pre\">sin</span> <span class=\"pre\">féin,</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">na</span> <span class=\"pre\">ceanntásca</span> <span class=\"pre\">céanna</span> <span class=\"pre\">a</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">le</span> <span class=\"pre\">haghaidh</span> <span class=\"pre\">gach</span> <span class=\"pre\">modh</span> <span class=\"pre\">HTTP</span> <span class=\"pre\">(`POST</span> <span class=\"pre\">``,</span> <span class=\"pre\">`PUT</span></code>, DELETE`, srl.).</p>\n<p>I gcás gach leathanach (freagra) a sheolann Django ar ais ó radharc, d'fhéadfadh sé dhá cheannteideal HTTP a sholáthar: an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Etag</span></code> agus an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">`Last-Modified</span></code>. Tá na ceanntásca seo roghnach ar fhreagairtí HTTP. Is féidir iad a shocrú le d'fheidhm amharc, nó is féidir leat brath ar an: class: ~django.middleware.http.ConditionalGetMiddleware middleware chun an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Etag</span></code> a shocrú.</p>\n<p>When the client next requests the same resource, it might send along a header\nsuch as either <span class=\"target\" id=\"index-0\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-13.1.3\"><strong>If-Modified-Since</strong></a> or\n<span class=\"target\" id=\"index-1\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-13.1.4\"><strong>If-Unmodified-Since</strong></a>, containing the date of the\nlast modification time it was sent, or either <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-13.1.1\"><strong>If-Match</strong></a> or <span class=\"target\" id=\"index-3\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-13.1.2\"><strong>If-None-Match</strong></a>,\ncontaining the last <code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code> it was sent. If the current version of the page\nmatches the <code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code> sent by the client, or if the resource has not been\nmodified, a 304 status code can be sent back, instead of a full response,\ntelling the client that nothing has changed. Depending on the header, if the\npage has been modified or does not match the <code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code> sent by the client, a 412\nstatus code (Precondition Failed) may be returned.</p>\n<p>Nuair a theastaíonn rialú níos mionghráite uait féadfaidh tú feidhmeanna próiseála coinníollach in aghaidh amharc a úsáid.</p>\n<section id=\"the-condition-decorator\">\n<span id=\"conditional-decorators\"></span><h2>An maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code><a class=\"heading-anchor\" href=\"#the-condition-decorator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uaireanta (i ndáiríre, go minic) is féidir leat feidhmeanna a chruthú chun an luach: rfc: EtaG &lt;9110 #section -8.8.3&gt; nó an t-am deireanach modhnaithe d'acmhainn a ríomh go tapa, <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>gan gá duit na ríomhanna go léir a theastaíonn chun an radharc iomlán a thógáil. Is féidir le Django na feidhmeanna seo a úsáid ansin chun rogha “fóirithint luath” a sholáthar don phróiseáil amharc. Ag rá leis an gcliant nár modhnaíodh an t-ábhar ón iarratas deireanach, b'fhéidir.</p>\n<p>Cuirtear an dá fheidhm seo ar aghaidh mar pharaiméadair chuig an maisitheoir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.views.decorators.http.condition`. Úsáideann an maisitheoir seo an dá fheidhm (ní gá duit ach ceann amháin a sholáthar, mura féidir leat an dá chainníocht a ríomh go héasca agus go tapa) chun oibriú amach má mheaitseálann na ceannteidil san iarratas HTTP iad siúd ar an acmhainn. Mura n-oireann siad, caithfear cóip nua den acmhainn a ríomh agus glaoch ar do ghnáthradharc.</p>\n<p>Tá cuma seo ar shíniú an maisitheora <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code>:</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\">condition</span><span class=\"p\">(</span><span class=\"n\">etag_func</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"n\">last_modified_func</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Cuirfear an dá fheidhm, chun an eTag agus an t-am modhnaithe deireanach a ríomh, ar an réad <code class=\"docutils literal notranslate\"><span class=\"pre\">iarraidh`</span> <span class=\"pre\">atá</span> <span class=\"pre\">ag</span> <span class=\"pre\">teacht</span> <span class=\"pre\">isteach</span> <span class=\"pre\">agus</span> <span class=\"pre\">na</span> <span class=\"pre\">paraiméadair</span> <span class=\"pre\">chéanna,</span> <span class=\"pre\">san</span> <span class=\"pre\">ord</span> <span class=\"pre\">céanna,</span> <span class=\"pre\">mar</span> <span class=\"pre\">an</span> <span class=\"pre\">fheidhm</span> <span class=\"pre\">amharc</span> <span class=\"pre\">atá</span> <span class=\"pre\">á</span> <span class=\"pre\">gcabhrú</span> <span class=\"pre\">leo</span> <span class=\"pre\">a</span> <span class=\"pre\">fhilleadh.</span> <span class=\"pre\">Ba</span> <span class=\"pre\">chóir</span> <span class=\"pre\">don</span> <span class=\"pre\">fheidhm</span> <span class=\"pre\">a</span> <span class=\"pre\">rith</span> <span class=\"pre\">``last_modified_func</span></code> luach caighdeánach dáta-ama a thabhairt ar ais ag sonrú an uair dheireanach a mhodhnaíodh an acmhainn, nó <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> mura bhfuil an acmhainn ann. &lt;9110 #section -8.8.3&gt;Ba chóir don fheidhm a chuirtear chuig an maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">etag</span></code> sreang a thabhairt ar ais a léiríonn na:rfc: Etag don acmhainn, nó <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>None <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>mura bhfuil sé ann.</p>\n<p>Socraíonn an maisitheoir na ceannteidil <code class=\"docutils literal notranslate\"><span class=\"pre\">Etag</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code> ar an bhfreagra mura bhfuil siad socraithe ag an dearcadh cheana féin agus má tá modh an iarratais sábháilte (GET` nó HEAD`).</p>\n<p>Is dócha gur fearr a mhíniú le sampla an ghné seo a úsáid go húsáideach. Cuir i gcás go bhfuil an péire samhlacha seo agat, a léiríonn córas blag beag:</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\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Blog</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Entry</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">blog</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Blog</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">published</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateTimeField</span><span class=\"p\">(</span><span class=\"n\">default</span><span class=\"o\">=</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">)</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Mura n-athraíonn an leathanach tosaigh, ag taispeáint na hiontrálacha blag is déanaí, ach nuair a chuireann tú iontráil nua blag leis, is féidir leat an t-am deireanach modhnaithe a ríomh go han-tapa. Teastaíonn an dáta <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>foilsithe <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>is déanaí uait do gach iontráil a bhaineann leis an bhlag sin. Bealach amháin chun é seo a dhéanamh ná:</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\">latest_entry</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">blog_id</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">blog</span><span class=\"o\">=</span><span class=\"n\">blog_id</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">latest</span><span class=\"p\">(</span><span class=\"s2\">&quot;published&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">published</span>\n</code></pre></div>\n<p>Is féidir leat an fheidhm seo a úsáid ansin chun leathanach gan athrú a bhrath go luath do d'amharc leathanaigh tosaigh:</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\">django.views.decorators.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">condition</span>\n\n\n<span class=\"nd\">@condition</span><span class=\"p\">(</span><span class=\"n\">last_modified_func</span><span class=\"o\">=</span><span class=\"n\">latest_entry</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">front_page</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">blog_id</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<aside class=\"admonition-be-careful-with-the-order-of-decorators admonition\">\n<p class=\"admonition-title\">Bí cúramach le hord na mhaisitheoirí</p>\n<p>Nuair a fhilleann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>coinníoll () freagra coinníollach, scipeánfar aon mhaisitheoirí faoin bhfois agus ní bheidh feidhm acu leis an bhfreagra. Dá bhrí sin, caithfidh aon mhaisitheoirí a gcaithfidh iarratas a dhéanamh ar an bhfreagra radharc rialta agus ar fhreagra coinníollach a bheith os cionn ``coinníoll () `. &lt;9110 #section -15.4.5&gt;Go háirithe, ba chóir go dtiocfadh :func: ~django.views.decorators.vary.vary_on_cookie, :func: ~django.views.decorators.vary.vary_on_headers, agus:func: ~django.views.decorators.cache.cache_control toisc: <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>110RFC 'éilíonn sé go mbeidh na ceanntásca a leagann siad i láthair ar 304 freagra.</p>\n</aside>\n</section>\n<section id=\"shortcuts-for-only-computing-one-value\">\n<h2>Aicearraí chun luach amháin a ríomh<a class=\"heading-anchor\" href=\"#shortcuts-for-only-computing-one-value\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Mar riail ghinearálta, más féidir leat feidhmeanna a sholáthar chun * an eTag agus an t-am deireanach modhnaithe a ríomh, ba cheart duit é sin a dhéanamh. Níl a fhios agat cé na ceanntásca a sheolfaidh aon chliant HTTP ar leith chugat, mar sin bí réidh chun an dá rud a láimhseáil. Mar sin féin, uaireanta ní furasta ach luach amháin a ríomh agus soláthraíonn Django maisiúcháin nach ndéanann ach eTag nó ríomhanna modhnaithe deiridh amháin.</p>\n<p>Rinne na maisitheoirí <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.decorators.http.etag</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.decorators.http.last_modified</span></code> an cineál céanna feidhmeanna leis an maisitheoir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>condition`. Is iad seo a gcuid sínithe:</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\">etag</span><span class=\"p\">(</span><span class=\"n\">etag_func</span><span class=\"p\">)</span>\n<span class=\"n\">last_modified</span><span class=\"p\">(</span><span class=\"n\">last_modified_func</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>D'fhéadfaimis an sampla níos luaithe a scríobh, nach n-úsáideann ach feidhm modhnaithe deireanach, ag baint úsáide as ceann de na maisitheoirí 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=\"nd\">@last_modified</span><span class=\"p\">(</span><span class=\"n\">latest_entry</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">front_page</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">blog_id</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>... nó:</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\">front_page</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">blog_id</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n<span class=\"n\">front_page</span> <span class=\"o\">=</span> <span class=\"n\">last_modified</span><span class=\"p\">(</span><span class=\"n\">latest_entry</span><span class=\"p\">)(</span><span class=\"n\">front_page</span><span class=\"p\">)</span>\n</code></pre></div>\n<section id=\"use-condition-when-testing-both-conditions\">\n<h3>Úsáid <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> agus an dá choinníoll á thástáil<a class=\"heading-anchor\" href=\"#use-condition-when-testing-both-conditions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>D'fhéadfadh go mbeadh cuma níos deise ag daoine áirithe triail a bhaint as na maisitheoirí <code class=\"docutils literal notranslate\"><span class=\"pre\">etag</span></code> agus last_modified a shlánú más mian leat an dá réamhchoinníoll a thástáil. Mar sin féin, bheadh iompar mícheart mar thoradh air 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=\"c1\"># Bad code. Don&#39;t do this!</span>\n<span class=\"nd\">@etag</span><span class=\"p\">(</span><span class=\"n\">etag_func</span><span class=\"p\">)</span>\n<span class=\"nd\">@last_modified</span><span class=\"p\">(</span><span class=\"n\">last_modified_func</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n<span class=\"c1\"># End of bad code.</span>\n</code></pre></div>\n<p>Níl a fhios ag an gcéad maisitheoir aon rud faoin dara ceann agus d'fhéadfadh sé freagra a thabhairt nach ndéantar an freagra a mhodhnú fiú má chinnfeadh an dara maisitheoirí a mhalairt. Úsáideann an maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> an dá fheidhm aisghlaonna ag an am céanna chun an gníomh ceart atá le déanamh a oibriú amach.</p>\n</section>\n</section>\n<section id=\"using-the-decorators-with-other-http-methods\">\n<h2>Ag baint úsáide as na maisitheoirí le modhanna HTTP eile<a class=\"heading-anchor\" href=\"#using-the-decorators-with-other-http-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá an maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> úsáideach le haghaidh níos mó ná iarratais <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> agus HEAD` amháin (tá iarratais <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code> mar an gcéanna le <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> sa chás seo). Is féidir é a úsáid freisin chun seiceáil a sholáthar d'iarratais <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span> <span class=\"pre\">``,</span> <span class=\"pre\">`PUT</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">DELETE</span></code>. Sna cásanna seo, ní é an smaoineamh freagra “neamh-mhodhnaithe” a thabhairt ar ais, ach a rá don chliant gur athraíodh an acmhainn atá siad ag iarraidh a athrú idir an dá linn.</p>\n<p>Mar shampla, smaoinigh ar an malartú seo a leanas idir an cliant agus an freastalaí:</p>\n<ol class=\"arabic simple\">\n<li><p>Iarratann cliant <code class=\"docutils literal notranslate\"><span class=\"pre\">/foo/</span></code>.</p></li>\n<li><p>Freagraíonn freastalaí le ábhar áirithe le ETag de <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>&quot;abcd1234&quot;<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p></li>\n<li><p>Seolann cliant iarratas HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">PUT</span></code> chuig <code class=\"docutils literal notranslate\"><span class=\"pre\">/foo/</span></code> chun an acmhainn a nuashonrú. Seolann sé ceanntásc <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>If-Match: “abcd1234&quot; <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>freisin chun an leagan atá á iarraidh a nuashonrú a shonrú.</p></li>\n<li><p>Seiceálann freastalaí chun a fháil amach an bhfuil an acmhainn athraithe, tríd an eTag a ríomh ar an mbealach céanna a dhéanann sé d'iarratas <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>GET <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>(ag baint úsáide as an bhfeidhm chéanna). Má athraíodh an acmhainne**, cuirfidh sé cód stádais 412 ar ais, rud a chiallaíonn “theip ar réamhchoinníoll”.</p></li>\n<li><p>Seolann an cliant iarratas <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span> <span class=\"pre\">``chuig</span> <span class=\"pre\">`/foo/</span></code>, tar éis freagra 412 a fháil, leagan nuashonraithe den ábhar a aisghabháil sula ndéantar é a nuashonrú.</p></li>\n</ol>\n<p>Is é an rud tábhachtach a thaispeánann an sampla seo ná gur féidir na feidhmeanna céanna a úsáid chun luachanna eTag agus modhnú deireanacha a ríomh i ngach cás. Déanta na fírinne, ba cheart duit** na feidhmeanna céanna a úsáid, ionas go gcuirfear na luachanna céanna ar ais gach uair.</p>\n<aside class=\"admonition-validator-headers-with-non-safe-request-methods admonition\">\n<p class=\"admonition-title\">Ceanntásca bailíochtaithe le modhanna iarratais neamhshábhá</p>\n<p>Ní shocraíonn an maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> ach ceannteidil bailíochtaithe (<code class=\"docutils literal notranslate\"><span class=\"pre\">Etag</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code>) le haghaidh modhanna HTTP sábháilte, ie <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code>. Más mian leat iad a thabhairt ar ais i gcásanna eile, socraigh iad i do thuairim. Féach: RFC: 9110 #section -9.3.4 chun foghlaim faoin idirdhealú idir ceanntásc bailíochtaithe a shocrú mar fhreagra ar iarratais a rinneadh le PUT` i gcoinne <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>POST <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</aside>\n</section>\n<section id=\"comparison-with-middleware-conditional-processing\">\n<h2>Comparáid le próiseáil choinníollach middleware<a class=\"heading-anchor\" href=\"#comparison-with-middleware-conditional-processing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Soláthraíonn Django láimhseáil coinníollach <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> via: class: django.middleware.http.conditionalGetMiddleware. Cé go bhfuil sé oiriúnach do go leor cásanna, tá teorainneacha ag an middleware maidir le hardúsáid:</p>\n<ul class=\"simple\">\n<li><p>Cuirtear i bhfeidhm go domhanda ar gach tuairim i do thionscadal.</p></li>\n<li><p>Ní shábhálann sé tú ón bhfreagra a ghiniúint, rud a d'fhéadfadh a bheith daor.</p></li>\n<li><p>Níl sé oiriúnach ach le haghaidh iarratais HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code>.</p></li>\n</ul>\n<p>Ba chóir duit an uirlis is oiriúnaí a roghnú do d'fhadhb ar leith anseo. Má tá bealach agat chun eTags agus amanna modhnaithe a ríomh go tapa agus má thógann dearcadh éigin tamall an t-ábhar a ghiniúint, ba cheart duit smaoineamh ar an maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> a thuairiscítear sa doiciméad seo a úsáid. Má ritheann gach rud go gasta cheana féin, cloí leis an meán-earraí a úsáid agus laghdófar méid tráchta líonra a sheoltar ar ais chuig na cliaint fós mura bhfuil an dearcadh athraithe.</p>\n</section>","rootId":"conditional-view-processing","toc":[{"title":"An maisitheoir coinníoll","anchor":"the-condition-decorator","children":[]},{"title":"Aicearraí chun luach amháin a ríomh","anchor":"shortcuts-for-only-computing-one-value","children":[{"title":"Úsáid coinníoll agus an dá choinníoll á thástáil","anchor":"use-condition-when-testing-both-conditions","children":[]}]},{"title":"Ag baint úsáide as na maisitheoirí le modhanna HTTP eile","anchor":"using-the-decorators-with-other-http-methods","children":[]},{"title":"Comparáid le próiseáil choinníollach middleware","anchor":"comparison-with-middleware-conditional-processing","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.0/topics/"}],"prev":{"docname":"topics/cache","title":"Creat taisce Django","url":"/ga/6.0/topics/cache/"},"next":{"docname":"topics/composite-primary-key","title":"Composite primary keys","url":"/ga/6.0/topics/composite-primary-key/"},"formats":{"html":"/ga/6.0/topics/conditional-view-processing/","markdown":"/ga/6.0/topics/conditional-view-processing.md","json":"/ga/6.0/topics/conditional-view-processing.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/conditional-view-processing.txt","official":"https://docs.djangoproject.com/ga/6.0/topics/conditional-view-processing/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}