{"title":"Creat seiceála an chórais","version":"5.2","locale":"ga","docname":"topics/checks","url":"/ga/5.2/topics/checks/","canonical":"https://djangodocs.dev/ga/5.2/topics/checks/","summary":"Is sraith seiceálacha statacha é creat seiceála an chórais chun tionscadail Django a bhailíochtú.","html":"<span id=\"system-check-framework\"></span><h1>Creat seiceála an chórais<a class=\"heading-anchor\" href=\"#module-django.core.checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is sraith seiceálacha statacha é creat seiceála an chórais chun tionscadail Django a bhailíochtú. Braithíonn sé fadhbanna coitianta agus soláthraíonn sé leideanna maidir le conas iad a shocrú. Tá an creat inleathnaithe ionas gur féidir leat do sheiceálacha féin a chur leis go héasca.</p>\n<p>Is féidir seiceálacha a spreagadh go sainráite tríd an ordú:djadmin: check. Cuirtear seiceálacha a spreagadh go hiontach roimh fhormhór na n-orduithe, lena n-áirítear: djadmin: runserver agus:djadmin: migrate. Ar chúiseanna feidhmíochta, ní reáchtáiltear seiceálacha mar chuid den chruach WSGI a úsáidtear in imscaradh. Más gá duit seiceálacha córais a reáchtáil ar do fhreastalaí imscartha, spreag iad go sainráite ag baint úsáide as: djadmin: check.</p>\n<p>Cuirfidh earráidí tromchúiseacha cosc ar orduithe Django (mar shampla: djadmin: runserver) ó rith ar chor ar bith. Tuairiscítear mionfhadhbanna don chonsól. Má rinne tú iniúchadh ar chúis rabhaidh agus má tá tú sásta neamhaird a dhéanamh air, is féidir leat rabhaidh sonracha a cheilt ag baint úsáide as an socrú: setting: SILENCED_SYSTEM_CHECKS i do chomhad socruithe tionscadail.</p>\n<p>Is féidir liosta iomlán de na seiceálacha go léir is féidir le Django a ardú a fháil in:doc: Tagairt seiceála córas &lt;/ref/checks&gt;.</p>\n<section id=\"writing-your-own-checks\">\n<h2>Do sheiceálacha féin a scríobh<a class=\"heading-anchor\" href=\"#writing-your-own-checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá an creat solúbtha agus tugann sé deis duit feidhmeanna a scríobh a dhéanann aon chineál eile seiceála a d'fhéadfadh a bheith ag teastáil uait. Seo a leanas feidhm sheiceála stub sampla:</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=\"nn\">django.core.checks</span> <span class=\"kn\">import</span> Error<span class=\"p\">,</span> register\n\n\n<span class=\"nd\">@register</span><span class=\"p\">()</span>\n<span class=\"k\">def</span> <span class=\"nf\">example_check</span><span class=\"p\">(</span>app_configs<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n    errors <span class=\"o\">=</span> <span class=\"p\">[]</span>\n    <span class=\"c1\"># ... your check logic here</span>\n    <span class=\"k\">if</span> check_failed<span class=\"p\">:</span>\n        errors<span class=\"o\">.</span>append<span class=\"p\">(</span>\n            Error<span class=\"p\">(</span>\n                <span class=\"s2\">&quot;an error&quot;</span><span class=\"p\">,</span>\n                hint<span class=\"o\">=</span><span class=\"s2\">&quot;A hint.&quot;</span><span class=\"p\">,</span>\n                obj<span class=\"o\">=</span>checked_object<span class=\"p\">,</span>\n                <span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"s2\">&quot;myapp.E001&quot;</span><span class=\"p\">,</span>\n            <span class=\"p\">)</span>\n        <span class=\"p\">)</span>\n    <span class=\"k\">return</span> errors\n</code></pre></div>\n<p>Caithfidh an fheidhm seiceála* glacadh le hargóint <code class=\"docutils literal notranslate\">app_configs</code>; is é an argóint seo an liosta d'iarratais ar chóir a iniúchadh. Má tá <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>None <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, ní mór an seiceáil a reáchtáil ar* gach aipeanna suiteáilte sa tionscadal.</p>\n<p>Gheobhaidh an seic argóint eochairfhocal <code class=\"docutils literal notranslate\">bunachar sonraí ``. Is liosta é seo d'ainmneacha bunachar sonraí ar féidir a naisc a úsáid chun cumraíocht leibhéal bunachar sonraí a iniúchadh. Más é ```bunachar sonraí ``None</code>, ní mór don seiceáil aon naisc bunachar sonraí a úsáid.</p>\n<p>Tá an argóint <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">**</span></a>kwargs <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>ag teastáil le haghaidh leathnú amach anseo.</p>\n<section id=\"messages\">\n<h3>Teachtaireachtaí<a class=\"heading-anchor\" href=\"#messages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Caithfidh an fheidhm liosta teachtaireachtaí a thabhairt ar ais. Mura bhfaightear aon fhadhbanna mar thoradh ar an seiceáil, caithfidh an fheidhm seiceála liosta folamh a thabhairt ar ais.</p>\n<p>Caithfidh na rabhaidh agus na hearráidí arna ardú ag an modh seiceála a bheith ina gcásanna de:class: ~django.core.checks.checkMessage. Cuimsíonn sampla de:class: ~Django.Core.Checks.CheckMessage earráid nó rabhadh amháin a thuairiscithe. Soláthraíonn sé comhthéacs agus leideanna is infheidhme maidir leis an teachtaireacht, agus aitheantóir uathúil a úsáidtear chun críocha scagtha.</p>\n<p>Tá an coincheap an-chosúil le teachtaireachtaí óna:doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>creat teachtaireachtaí <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>nó la:doc: <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>creat logála <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>&lt;/ref/contrib/messages&gt; &lt;/topics/logging&gt;. Tá 'leibhéal' clibeáilte ag teachtaireachtaí a léiríonn déine na teachtaireachta.</p>\n<p>Tá aicearraí ann freisin chun teachtaireachtaí a chruthú le leibhéil choiteanna a dhéanamh níos éasca. Agus na ranganna seo á úsáid agat is féidir leat an argóint <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>leibhéil <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a fhágáil toisc go bhfuil ainm an ranga intuigthe air.</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/ref/checks/#django.core.checks.Debug\" title=\"django.core.checks.Debug\"><code class=\"xref py py-class docutils literal notranslate\">Debug</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/ref/checks/#django.core.checks.Info\" title=\"django.core.checks.Info\"><code class=\"xref py py-class docutils literal notranslate\">Info</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/ref/checks/#django.core.checks.Warning\" title=\"django.core.checks.Warning\"><code class=\"xref py py-class docutils literal notranslate\">Warning</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/ref/checks/#django.core.checks.Error\" title=\"django.core.checks.Error\"><code class=\"xref py py-class docutils literal notranslate\">Error</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/5.2/ref/checks/#django.core.checks.Critical\" title=\"django.core.checks.Critical\"><code class=\"xref py py-class docutils literal notranslate\">Critical</code></a></p></li>\n</ul>\n</section>\n<section id=\"registering-and-labeling-checks\">\n<span id=\"registering-labeling-checks\"></span><h3>Seiceálacha clárú agus lipéad<a class=\"heading-anchor\" href=\"#registering-and-labeling-checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ar deireadh, caithfear d'fheidhm seiceála a chlárú go sainráite le clárlann seiceála córais. &lt;django.apps.AppConfig.ready&gt;Ba chóir seiceálacha a chlárú i gcomhad a luchtaítear nuair a luchtaítear d'iarratas; mar shampla, sa modh:meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>AppConfig.ready () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.register\">\n<span class=\"sig-name descname\">register</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">*tags)(function</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.checks.register\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is féidir leat an oiread clibeanna a chur chuig <code class=\"docutils literal notranslate\">clár</code> agus is mian leat d'fhonn do sheic a lipéadú. Tá seiceálacha clibeála úsáideach ós rud é go gceadaíonn sé duit ach grúpa áirithe seiceálacha a reáchtáil. Mar shampla, chun seiceáil comhoiriúnachta a chlárú, déanfá an glao seo a leanas:</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=\"nn\">django.core.checks</span> <span class=\"kn\">import</span> register<span class=\"p\">,</span> Tags\n\n\n<span class=\"nd\">@register</span><span class=\"p\">(</span>Tags<span class=\"o\">.</span>compatibility<span class=\"p\">)</span>\n<span class=\"k\">def</span> <span class=\"nf\">my_check</span><span class=\"p\">(</span>app_configs<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n    <span class=\"c1\"># ... perform compatibility checks and collect errors</span>\n    <span class=\"k\">return</span> errors\n</code></pre></div>\n<p>Is féidir leat “seiceálacha imscartha” a chlárú nach bhfuil ábhartha ach le comhad socruithe táirgeachta 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=\"nd\">@register</span><span class=\"p\">(</span>Tags<span class=\"o\">.</span>security<span class=\"p\">,</span> deploy<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"k\">def</span> <span class=\"nf\">my_check</span><span class=\"p\">(</span>app_configs<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Ní reáchtálfar na seiceálacha seo ach amháin má úsáidtear an rogha: check --deploy.</p>\n<p>Is féidir leat <code class=\"docutils literal notranslate\">clár</code> a úsáid freisin mar fheidhm seachas maisitheoir trí réad inghlaonta (feidhm de ghnáth) a chur ar aghaidh mar an chéad argóint chun <code class=\"docutils literal notranslate\">clár</code>.</p>\n<p>Tá an cód thíos comhionann leis an gcód thuas:</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=\"nf\">my_check</span><span class=\"p\">(</span>app_configs<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\nregister<span class=\"p\">(</span>my_check<span class=\"p\">,</span> Tags<span class=\"o\">.</span>security<span class=\"p\">,</span> deploy<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"field-model-manager-template-engine-and-database-checks\">\n<span id=\"field-checking\"></span><h3>Seiceálacha réimse, samhail, bainisteoir, inneall teimpléad agus bunachar sonraí<a class=\"heading-anchor\" href=\"#field-model-manager-template-engine-and-database-checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>I roinnt cásanna, ní bheidh ort do fheidhm seiceála a chlárú - is féidir leat piggyback ar chlárú atá ann cheana.</p>\n<p>Cuireann réimsí, samhlacha, bainisteoirí samhlacha, innill teimpléid, agus cúltaca bunachar sonraí go léir modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>seiceáil () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>i bhfeidhm atá cláraithe cheana leis an gcreat seiceála. Más mian leat seiceálacha breise a chur leis, is féidir leat an cur i bhfeidhm ar an rang bonn a leathnú, aon seiceálacha breise a theastaíonn uait a dhéanamh, agus aon teachtaireachtaí a chur leis na teachtaireachtaí a ghineann an bunaicme. Moltar duit gach seiceáil a tharmligean chuig modhanna ar leithligh.</p>\n<p>Smaoinigh ar shampla ina bhfuil réimse saincheaptha darb ainm <code class=\"docutils literal notranslate\">RangedIntegerField</code> á chur i bhfeidhm agat. Cuireann an réimse seo argóintí <code class=\"docutils literal notranslate\">min</code> agus <code class=\"docutils literal notranslate\">max</code> le tógálaí <code class=\"docutils literal notranslate\">IntegerField</code>. B'fhéidir gur mhaith leat seic a chur leis chun a chinntiú go soláthraíonn úsáideoirí luach íosta atá níos lú ná nó comhionann leis an luach uasta. Taispeánann an snippet cód seo a leanas conas is féidir leat an seiceáil seo a chur i bhfeidhm:</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=\"nn\">django.core</span> <span class=\"kn\">import</span> checks\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">RangedIntegerField</span><span class=\"p\">(</span>models<span class=\"o\">.</span>IntegerField<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"nb\">min</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"nb\">max</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>min <span class=\"o\">=</span> <span class=\"nb\">min</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>max <span class=\"o\">=</span> <span class=\"nb\">max</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">check</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"c1\"># Call the superclass</span>\n        errors <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>check<span class=\"p\">(</span><span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n\n        <span class=\"c1\"># Do some custom checks and add messages to `errors`:</span>\n        errors<span class=\"o\">.</span>extend<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>_check_min_max_values<span class=\"p\">(</span><span class=\"o\">**</span>kwargs<span class=\"p\">))</span>\n\n        <span class=\"c1\"># Return all errors and warnings</span>\n        <span class=\"k\">return</span> errors\n\n    <span class=\"k\">def</span> <span class=\"nf\">_check_min_max_values</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"bp\">self</span><span class=\"o\">.</span>min <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span> <span class=\"ow\">and</span> <span class=\"bp\">self</span><span class=\"o\">.</span>max <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span> <span class=\"ow\">and</span> <span class=\"bp\">self</span><span class=\"o\">.</span>min <span class=\"o\">&gt;</span> <span class=\"bp\">self</span><span class=\"o\">.</span>max<span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"p\">[</span>\n                checks<span class=\"o\">.</span>Error<span class=\"p\">(</span>\n                    <span class=\"s2\">&quot;min greater than max.&quot;</span><span class=\"p\">,</span>\n                    hint<span class=\"o\">=</span><span class=\"s2\">&quot;Decrease min or increase max.&quot;</span><span class=\"p\">,</span>\n                    obj<span class=\"o\">=</span><span class=\"bp\">self</span><span class=\"p\">,</span>\n                    <span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"s2\">&quot;myapp.E001&quot;</span><span class=\"p\">,</span>\n                <span class=\"p\">)</span>\n            <span class=\"p\">]</span>\n        <span class=\"c1\"># When no error, return an empty list</span>\n        <span class=\"k\">return</span> <span class=\"p\">[]</span>\n</code></pre></div>\n<p>Dá dteastaíonn uait seiceálacha a chur le bainisteoir samhail, glacfá an cur chuige céanna ar do fho-aicme de:class: ~Django.db.Models.Manager.</p>\n<p>Más mian leat seic a chur le rang samhail, is é an cur chuige <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>beagnach mar an gcéanna: is é an t-aon difríocht ná gur modh ranga é an seiceáil, ní modh sampla:</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=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"nd\">@classmethod</span>\n    <span class=\"k\">def</span> <span class=\"nf\">check</span><span class=\"p\">(</span><span class=\"bp\">cls</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        errors <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>check<span class=\"p\">(</span><span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"c1\"># ... your own checks ...</span>\n        <span class=\"k\">return</span> errors\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"5.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.1</p><p>I leaganacha níos sine, níor chuir innill teimpléid modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>check () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>i bhfeidhm.</p>\n</aside>\n</section>\n<section id=\"writing-tests\">\n<h3>Tástála scríbhneo<a class=\"heading-anchor\" href=\"#writing-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tá teachtaireachtaí inchomparáide. Ligeann sé sin duit tástálacha a scríobh go héasca:</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=\"nn\">django.core.checks</span> <span class=\"kn\">import</span> Error\n\nerrors <span class=\"o\">=</span> checked_object<span class=\"o\">.</span>check<span class=\"p\">()</span>\nexpected_errors <span class=\"o\">=</span> <span class=\"p\">[</span>\n    Error<span class=\"p\">(</span>\n        <span class=\"s2\">&quot;an error&quot;</span><span class=\"p\">,</span>\n        hint<span class=\"o\">=</span><span class=\"s2\">&quot;A hint.&quot;</span><span class=\"p\">,</span>\n        obj<span class=\"o\">=</span>checked_object<span class=\"p\">,</span>\n        <span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"s2\">&quot;myapp.E001&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">]</span>\n<span class=\"bp\">self</span><span class=\"o\">.</span>assertEqual<span class=\"p\">(</span>errors<span class=\"p\">,</span> expected_errors<span class=\"p\">)</span>\n</code></pre></div>\n<section id=\"writing-integration-tests\">\n<h4>Tástálacha comhtháthaithe a<a class=\"heading-anchor\" href=\"#writing-integration-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Mar gheall ar an ngá atá le seiceálacha áirithe a chlárú nuair a luchtaíonn an feidhmchlár, d'fhéadfadh sé a bheith úsáideach a gcomhtháthú a thástáil laistigh Is féidir é seo a chur i gcrích tríd an bhfeidhm: func: ~django.core.management.call_command a úsáid.</p>\n<p>&lt;sites-system-checks&gt;Mar shampla, léiríonn an tástáil seo go gcaithfidh an socrúit:setting: SITE_ID a bheith ina sláimhir, ina ion:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>seiceáil ó chreat na suíomhanna <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=\"kn\">from</span> <span class=\"nn\">django.core.management</span> <span class=\"kn\">import</span> call_command\n<span class=\"kn\">from</span> <span class=\"nn\">django.core.management.base</span> <span class=\"kn\">import</span> SystemCheckError\n<span class=\"kn\">from</span> <span class=\"nn\">django.test</span> <span class=\"kn\">import</span> SimpleTestCase<span class=\"p\">,</span> modify_settings<span class=\"p\">,</span> override_settings\n\n\n<span class=\"k\">class</span> <span class=\"nc\">SystemCheckIntegrationTest</span><span class=\"p\">(</span>SimpleTestCase<span class=\"p\">):</span>\n    <span class=\"nd\">@override_settings</span><span class=\"p\">(</span>SITE_ID<span class=\"o\">=</span><span class=\"s2\">&quot;non_integer&quot;</span><span class=\"p\">)</span>\n    <span class=\"nd\">@modify_settings</span><span class=\"p\">(</span>INSTALLED_APPS<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;prepend&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.contrib.sites&quot;</span><span class=\"p\">})</span>\n    <span class=\"k\">def</span> <span class=\"nf\">test_non_integer_site_id</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        message <span class=\"o\">=</span> <span class=\"s2\">&quot;(sites.E101) The SITE_ID setting must be an integer.&quot;</span>\n        <span class=\"k\">with</span> <span class=\"bp\">self</span><span class=\"o\">.</span>assertRaisesMessage<span class=\"p\">(</span>SystemCheckError<span class=\"p\">,</span> message<span class=\"p\">):</span>\n            call_command<span class=\"p\">(</span><span class=\"s2\">&quot;check&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Smaoinigh ar an seiceáil seo a leanas a eisíonn rabhadh maidir le himscaradh mura bhfuil socrú saincheaptha darb ainm ENABLE_ANALYTICS` socraithe go <code class=\"docutils literal notranslate\">True</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=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.core.checks</span> <span class=\"kn\">import</span> <span class=\"ne\">Warning</span><span class=\"p\">,</span> register\n\n\n<span class=\"nd\">@register</span><span class=\"p\">(</span><span class=\"s2\">&quot;myapp&quot;</span><span class=\"p\">,</span> deploy<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"k\">def</span> <span class=\"nf\">check_enable_analytics_is_true_on_deploy</span><span class=\"p\">(</span>app_configs<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n    errors <span class=\"o\">=</span> <span class=\"p\">[]</span>\n    <span class=\"k\">if</span> <span class=\"nb\">getattr</span><span class=\"p\">(</span>settings<span class=\"p\">,</span> <span class=\"s2\">&quot;ENABLE_ANALYTICS&quot;</span><span class=\"p\">,</span> <span class=\"kc\">None</span><span class=\"p\">)</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">True</span><span class=\"p\">:</span>\n        errors<span class=\"o\">.</span>append<span class=\"p\">(</span>\n            <span class=\"ne\">Warning</span><span class=\"p\">(</span>\n                <span class=\"s2\">&quot;The ENABLE_ANALYTICS setting should be set to True in deployment.&quot;</span><span class=\"p\">,</span>\n                <span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"s2\">&quot;myapp.W001&quot;</span><span class=\"p\">,</span>\n            <span class=\"p\">)</span>\n        <span class=\"p\">)</span>\n    <span class=\"k\">return</span> errors\n</code></pre></div>\n<p>Ós rud é nach n-ardóidh an seiceáil seo SystemCheckerror`, is féidir láithreacht na teachtaireachta rabhaidh san aschur <code class=\"docutils literal notranslate\">stderr</code> a dhearbhú 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=\"kn\">from</span> <span class=\"nn\">io</span> <span class=\"kn\">import</span> StringIO\n\n<span class=\"kn\">from</span> <span class=\"nn\">django.core.management</span> <span class=\"kn\">import</span> call_command\n<span class=\"kn\">from</span> <span class=\"nn\">django.test</span> <span class=\"kn\">import</span> SimpleTestCase<span class=\"p\">,</span> override_settings\n\n\n<span class=\"k\">class</span> <span class=\"nc\">EnableAnalyticsDeploymentCheckTest</span><span class=\"p\">(</span>SimpleTestCase<span class=\"p\">):</span>\n    <span class=\"nd\">@override_settings</span><span class=\"p\">(</span>ENABLE_ANALYTICS<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">test_when_set_to_none</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        stderr <span class=\"o\">=</span> StringIO<span class=\"p\">()</span>\n        call_command<span class=\"p\">(</span><span class=\"s2\">&quot;check&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;-t&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;myapp&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;--deploy&quot;</span><span class=\"p\">,</span> stderr<span class=\"o\">=</span>stderr<span class=\"p\">)</span>\n        message <span class=\"o\">=</span> <span class=\"p\">(</span>\n            <span class=\"s2\">&quot;(myapp.W001) The ENABLE_ANALYTICS setting should be set &quot;</span>\n            <span class=\"s2\">&quot;to True in deployment.&quot;</span>\n        <span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>assertIn<span class=\"p\">(</span>message<span class=\"p\">,</span> stderr<span class=\"o\">.</span>getvalue<span class=\"p\">())</span>\n</code></pre></div>\n</section>\n</section>\n</section>","rootId":"module-django.core.checks","toc":[{"title":"Do sheiceálacha féin a scríobh","anchor":"writing-your-own-checks","children":[{"title":"Teachtaireachtaí","anchor":"messages","children":[]},{"title":"Seiceálacha clárú agus lipéad","anchor":"registering-and-labeling-checks","children":[]},{"title":"Seiceálacha réimse, samhail, bainisteoir, inneall teimpléad agus bunachar sonraí","anchor":"field-model-manager-template-engine-and-database-checks","children":[]},{"title":"Tástála scríbhneo","anchor":"writing-tests","children":[{"title":"Tástálacha comhtháthaithe a","anchor":"writing-integration-tests","children":[]}]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/5.2/topics/"}],"prev":{"docname":"topics/signals","title":"Comharthaí","url":"/ga/5.2/topics/signals/"},"next":{"docname":"topics/external-packages","title":"Pacáistí seachtr","url":"/ga/5.2/topics/external-packages/"},"formats":{"html":"/ga/5.2/topics/checks/","markdown":"/ga/5.2/topics/checks.md","json":"/ga/5.2/topics/checks.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/topics/checks.txt","official":"https://docs.djangoproject.com/ga/5.2/topics/checks/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}