{"title":"Tuairimí rang-bhunaithe","version":"6.0","locale":"ga","docname":"topics/class-based-views/index","url":"/ga/6.0/topics/class-based-views/","canonical":"https://djangodocs.dev/ga/6.0/topics/class-based-views/","summary":"Is é an dearcadh inghlaonta a ghlacann iarratas agus a thugann freagra ar ais. Is féidir leis seo a bheith níos mó ná feidhm amháin, agus soláthraíonn Django sampla…","html":"<h1>Tuairimí rang-bhunaithe<a class=\"heading-anchor\" href=\"#class-based-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is é an dearcadh inghlaonta a ghlacann iarratas agus a thugann freagra ar ais. Is féidir leis seo a bheith níos mó ná feidhm amháin, agus soláthraíonn Django sampla de roinnt ranganna is féidir a úsáid mar thuairimí. Ligeann siad seo duit do thuairimí a struchtúrú agus an cód a athúsáid trí oidhreacht agus meascáin a úsáid. Tá roinnt tuairimí cineálacha ann freisin maidir le tascanna a gheobhaidh muid orthu níos déanaí, ach b'fhéidir gur mhaith leat do struchtúr féin de radhairc in-athúsáidte a dhearadh a oireann do do chás úsáide. Le haghaidh sonraí iomlána, féach an:doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>doiciméadú tagartha tuairimí rang-bhunaithe '&lt;/ref/class-based-views/index&gt;.</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ga/6.0/topics/class-based-views/intro/\">Réamhrá ar thuairimí rangbhunaithe</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ga/6.0/topics/class-based-views/generic-display/\">Tuairimí cineálacha bunaithe ar rang ionsuite</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ga/6.0/topics/class-based-views/generic-editing/\">Láimhseáil foirme le tuairimí rangbhunaithe</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ga/6.0/topics/class-based-views/mixins/\">Ag baint úsáide as meascáin le tuairimí rangbhunaithe</a></li>\n</ul>\n</div>\n<section id=\"basic-examples\">\n<h2>Samplaí bunúsacha<a class=\"heading-anchor\" href=\"#basic-examples\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Soláthraíonn Django ranganna bunradharc a oireann do raon leathan feidhmchlár. Tá na tuairimí go léir ag oidhreacht ón aic:class: ~django.views.Generic.Base.View, a láimhseálann an radharc a nascadh isteach sna URLanna, seoladh modh HTTP agus gnéithe coitianta eile. :class: ~Django.Views.Generic.Base.RedirectView soláthraíonn atreorú HTTP, agus:class: ~Django.Views.Generic.Base.TemplateView leathnaíonn an bunaicme chun teimpléad a dhéanamh freisin.</p>\n</section>\n<section id=\"usage-in-your-urlconf\">\n<h2>Úsáid i do URLConf<a class=\"heading-anchor\" href=\"#usage-in-your-urlconf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is é an bealach is díreach chun tuairimí cineálacha a úsáid ná iad a chruthú go díreach i do URLConf. Mura bhfuil tú ag athrú ach cúpla tréith ar radharc rang-bhunaithe, is féidir leat iad a chur isteach sa mhodh:meth: ~Django.Views.Generic.Base.View.as_View glaoch air féin:</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.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;about/&quot;</span><span class=\"p\">,</span> <span class=\"n\">TemplateView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span><span class=\"n\">template_name</span><span class=\"o\">=</span><span class=\"s2\">&quot;about.html&quot;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Déanfaidh aon argóintí a chuirtear chuig:meth: ~django.views.generic.base.view.as_view tréithe atá leagtha síos ar an rang. Sa sampla seo, socraíomar <code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code> ar an TemplateView`. Is féidir patrún forbhríoch den chineál céanna a úsáid don tréith <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>url <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ar:class: ~django.views.Generic.Base.RedirectView.</p>\n</section>\n<section id=\"subclassing-generic-views\">\n<h2>Tuairimí cineálacha a fho-aicmiú<a class=\"heading-anchor\" href=\"#subclassing-generic-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is é an dara bealach níos cumhachtaí chun tuairimí cineálacha a úsáid ná oidhreacht ó radharc atá ann cheana agus tréithe a shárú (mar shampla an template_name`) nó modhanna (mar shampla <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_context_data <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>) i do fho-rang chun luachanna nó modhanna nua a sholáthar. Smaoinigh, mar shampla, ar radharc nach dtaispeánann ach teimpléad amháin, <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>about.html`. Tá dearcadh cineálach ag Django chun é seo a dhéanamh -:class: ~Django.Views.Generic.Base.TemplateView - ionas gur féidir linn é a fho-aicmiú, agus ainm an teimpléid a shárú:</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\"># some_app/views.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateView</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AboutView</span><span class=\"p\">(</span><span class=\"n\">TemplateView</span><span class=\"p\">):</span>\n    <span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;about.html&quot;</span>\n</code></pre></div>\n<p>Ansin ní mór dúinn an dearcadh nua seo a chur isteach inár URLConf. :class: Is rang é ~django.views.generic.base.templateView, ní feidhm, mar sin dírímid an URL chuig an modh ranga:meth: ~django.views.generic.base.view.as_view ina ionad sin, a sholáthraíonn iontráil cosúil le feidhm chuig tuairimí rang-bhunaithe:</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\"># urls.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">some_app.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AboutView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;about/&quot;</span><span class=\"p\">,</span> <span class=\"n\">AboutView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Le haghaidh tuilleadh faisnéise maidir le conas na tuairimí cineálacha atá tógtha in úsáid, téigh i gcomhairle leis an gcéad ábhar eile ar:doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>tuairimí cineálacha bunaithe ar aicme'&lt;/topics/class-based-views/generic-display&gt;.</p>\n<section id=\"supporting-other-http-methods\">\n<span id=\"id1\"></span><h3>Tacú le modhanna HTTP eile<a class=\"heading-anchor\" href=\"#supporting-other-http-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cuir i gcás gur mhaith le duine rochtain a fháil ar ár leabharlann leabhar thar HTTP ag baint úsáide as na tuairimí Ceanglódh an cliant API anois agus arís agus sonraí leabhar a íoslódáil do na leabhair a foilsíodh ón gcuairt dheireanach. Ach mura raibh aon leabhair nua le feiceáil ó shin i leith, is cur amú ama LAP agus bandaleithead é na leabhair a fháil ón mbunachar sonraí, freagra iomlán a thabhairt agus é a sheoladh chuig an gcliant. B'fhéidir gur fearr a iarraidh ar an API nuair a foilsíodh an leabhar is déanaí.</p>\n<p>Déanaimid léarscáil an URL chun amharc liosta a chur in áirithe sa URLConf:</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.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">books.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">BookListView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;books/&quot;</span><span class=\"p\">,</span> <span class=\"n\">BookListView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Agus an dearcadh:</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.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ListView</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">books.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Book</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BookListView</span><span class=\"p\">(</span><span class=\"n\">ListView</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Book</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">head</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">last_book</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_queryset</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">latest</span><span class=\"p\">(</span><span class=\"s2\">&quot;publication_date&quot;</span><span class=\"p\">)</span>\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span>\n            <span class=\"c1\"># RFC 1123 date format.</span>\n            <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span>\n                <span class=\"s2\">&quot;Last-Modified&quot;</span><span class=\"p\">:</span> <span class=\"n\">last_book</span><span class=\"o\">.</span><span class=\"n\">publication_date</span><span class=\"o\">.</span><span class=\"n\">strftime</span><span class=\"p\">(</span>\n                    <span class=\"s2\">&quot;</span><span class=\"si\">%a</span><span class=\"s2\">, </span><span class=\"si\">%d</span><span class=\"s2\"> %b %Y %H:%M:%S GMT&quot;</span>\n                <span class=\"p\">)</span>\n            <span class=\"p\">},</span>\n        <span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>If the view is accessed from a <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> request, an object list is returned in\nthe response (using the <code class=\"docutils literal notranslate\"><span class=\"pre\">book_list.html</span></code> template). But if the client issues\na <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code> request, the response has an empty body and the <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code>\nheader indicates when the most recent book was published. Based on this\ninformation, the client may or may not download the full object list.</p>\n</section>\n</section>\n<section id=\"asynchronous-class-based-views\">\n<span id=\"async-class-based-views\"></span><h2>Tuairimí asincrónacha bunaithe ar rang<a class=\"heading-anchor\" href=\"#asynchronous-class-based-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Chomh maith leis na láimhseálaithe modh sioncrónach (def`) a thaispeántar cheana féin, féadfaidh fo-aicmí <code class=\"docutils literal notranslate\"><span class=\"pre\">View`</span> <span class=\"pre\">láimhseálaithe</span> <span class=\"pre\">modh</span> <span class=\"pre\">asincrónacha</span> <span class=\"pre\">(``async</span> <span class=\"pre\">def</span></code>) a shainiú chun cód asincrónach a ghiaráil ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">ag</span> <span class=\"pre\">fanacht</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=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">asyncio</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">View</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AsyncView</span><span class=\"p\">(</span><span class=\"n\">View</span><span class=\"p\">):</span>\n    <span class=\"k\">async</span> <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Perform io-blocking view logic using await, sleep for example.</span>\n        <span class=\"k\">await</span> <span class=\"n\">asyncio</span><span class=\"o\">.</span><span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s2\">&quot;Hello async world!&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Laistigh de rang amhairc amháin, caithfidh gach láimhseálaí modh atá sainmhínithe ag úsáideoir a bheith sioncrónach, ag baint úsáide as def`, nó gach asincrónach, ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">async</span> <span class=\"pre\">def</span></code>. Ardófar eisceacht <code class=\"docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code> i <code class=\"docutils literal notranslate\"><span class=\"pre\">as_view</span> <span class=\"pre\">()</span> <span class=\"pre\">``má</span> <span class=\"pre\">tá</span> <span class=\"pre\">dearbhuithe</span> <span class=\"pre\">``def</span></code> agus async def` measctha.</p>\n<p>Braithfidh Django tuairimí asincrónacha go huathoibríoch agus reáchtálfaidh siad iad i gcomhthéacs asincrónach. Is féidir leat tuilleadh a léamh faoi thacaíocht asincrónach Django, agus conas tuairimí async a úsáid is fearr, in:doc: /topics/async.</p>\n</section>","rootId":"class-based-views","toc":[{"title":"Samplaí bunúsacha","anchor":"basic-examples","children":[]},{"title":"Úsáid i do URLConf","anchor":"usage-in-your-urlconf","children":[]},{"title":"Tuairimí cineálacha a fho-aicmiú","anchor":"subclassing-generic-views","children":[{"title":"Tacú le modhanna HTTP eile","anchor":"supporting-other-http-methods","children":[]}]},{"title":"Tuairimí asincrónacha bunaithe ar rang","anchor":"asynchronous-class-based-views","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.0/topics/"}],"prev":{"docname":"topics/templates","title":"Teimpléid","url":"/ga/6.0/topics/templates/"},"next":{"docname":"topics/class-based-views/intro","title":"Réamhrá ar thuairimí rangbhunaithe","url":"/ga/6.0/topics/class-based-views/intro/"},"formats":{"html":"/ga/6.0/topics/class-based-views/","markdown":"/ga/6.0/topics/class-based-views.md","json":"/ga/6.0/topics/class-based-views.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/class-based-views/index.txt","official":"https://docs.djangoproject.com/ga/6.0/topics/class-based-views/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}