{"title":"Tuairimí cineálacha bunaithe ar rang ionsuite","version":"6.0","locale":"ga","docname":"topics/class-based-views/generic-display","url":"/ga/6.0/topics/class-based-views/generic-display/","canonical":"https://djangodocs.dev/ga/6.0/topics/class-based-views/generic-display/","summary":"Is féidir le feidhmchláir gréasáin a scríobh a bheith aontónach, toisc go ndéanaimid patrúin áirithe a athdhéanamh Déanann Django iarracht cuid den aonfhoirmeacht…","html":"<h1>Tuairimí cineálacha bunaithe ar rang ionsuite<a class=\"heading-anchor\" href=\"#built-in-class-based-generic-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is féidir le feidhmchláir gréasáin a scríobh a bheith aontónach, toisc go ndéanaimid patrúin áirithe a athdhéanamh Déanann Django iarracht cuid den aonfhoirmeacht sin a thógáil ar shiúl ag na sraitheanna samhail agus teimpléad, ach bíonn forbróirí gréasáin ag an leamh seo ag an leibhéal radhairc freisin.</p>\n<p>Forbraíodh <em>tuairimí cineálacha</em> Django chun an pian sin a mhaolú. Tógann siad nathanna agus patrúin choitianta áirithe a fhaightear i bhforbairt amharc agus déanann siad teibí orthu ionas gur féidir leat tuairimí coitianta ar shonraí a scríobh go tapa gan an iomarca cód a</p>\n<p>Is féidir linn tascanna coitianta áirithe a aithint, cosúil le liosta rudaí a thaispeáint, agus cód a scríobh a thaispeánann liosta de*aon réad*. Ansin is féidir an tsamhail atá i gceist a chur ar aghaidh mar argóint bhreise chuig an URLConf.</p>\n<p>Seolann Django le tuairimí cineálacha chun na nithe seo a leanas a dhéanamh:</p>\n<ul class=\"simple\">\n<li><p>Taispeáin liosta agus leathanaigh mionsonraithe le haghaidh réad amháin. Dá mbeimid ag cruthú feidhmchlár chun comhdhálacha a bhainistiú ansin bheadh TalkListView agus <code class=\"docutils literal notranslate\"><span class=\"pre\">RegisteredUserListView</span></code> ina samplaí de thuairimí liosta. Is sampla é leathanach cainte amháin den rud a thugaimid ar radharc “mionsonraí”.</p></li>\n<li><p>Cuir rudaí dáta-bhunaithe i láthair i leathanaigh cartlainne blian/mí/lá, mionsonraí gaolmhara, agus leathanaigh “is déanaí”.</p></li>\n<li><p>Lig d'úsáideoirí rudaí a chruthú, a nuashonrú agus a scriosadh - le húdarú nó gan údarú.</p></li>\n</ul>\n<p>Le chéile, soláthraíonn na tuairimí seo comhéadain chun na tascanna is coitianta a thagann forbróirí a dhéanamh</p>\n<section id=\"extending-generic-views\">\n<h2>Tuairimí cineálacha a le<a class=\"heading-anchor\" href=\"#extending-generic-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Níl aon cheist ann gur féidir le tuairimí cineálacha a úsáid a bhrostú go suntasach. I bhformhór na dtionscadail, áfach, tagann nóiméad nuair nach leor na tuairimí cineálacha a thuilleadh. Go deimhin, is í an cheist is coitianta a chuireann forbróirí nua Django ná conas tuairimí cineálacha a láimhseáil le raon níos leithne cásanna.</p>\n<p>Seo ceann de na cúiseanna a athdhearadh tuairimí cineálacha don scaoileadh 1.3 - roimhe seo, bhí feidhmeanna amharc acu le sraith roghanna mealltach; anois, seachas cuid mhór cumraíochta a chur isteach sa URLConf, is é an bealach molta chun tuairimí cineálacha a leathnú ná iad a fho-aicmiú, agus a gcuid tréithe nó modhanna a shárú.</p>\n<p>É sin ráite, beidh teorainn ag tuairimí cineálacha. Má aimsíonn tú go bhfuil tú ag streachailt do dhearcadh a chur i bhfeidhm mar fho-aicme de radharc cineálach, ansin b'fhéidir go mbeidh sé níos éifeachtaí duit ach an cód a theastaíonn uait a scríobh, ag baint úsáide as do thuairimí rang-bhunaithe nó feidhmiúla féin.</p>\n<p>Tá níos mó samplaí de thuairimí cineálacha ar fáil i roinnt feidhmchlár tríú páirtí, nó d'fhéadfá do chuid féin a scríobh de réir mar is gá.</p>\n</section>\n<section id=\"generic-views-of-objects\">\n<h2>Tuairimí cineálacha ar rudaí<a class=\"heading-anchor\" href=\"#generic-views-of-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/ga/6.0/ref/class-based-views/base/#django.views.generic.base.TemplateView\" title=\"django.views.generic.base.TemplateView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateView</span></code></a> certainly is useful, but\nDjango's generic views really shine when it comes to presenting views of your\ndatabase content. Because it's such a common task, Django comes with a handful\nof built-in generic views to help generate list and detail views of objects.</p>\n<p>Tosaímid trí fhéachaint ar roinnt samplaí de liosta rudaí nó réad aonair a thaispeáint.</p>\n<p>Beidh muid ag baint úsáide as na samhlacha 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\"># models.py</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\">Publisher</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\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">address</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">city</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n    <span class=\"n\">state_province</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">country</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">website</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">URLField</span><span class=\"p\">()</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;-name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">name</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Author</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\">salutation</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"n\">email</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">EmailField</span><span class=\"p\">()</span>\n    <span class=\"n\">headshot</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ImageField</span><span class=\"p\">(</span><span class=\"n\">upload_to</span><span class=\"o\">=</span><span class=\"s2\">&quot;author_headshots&quot;</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">name</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Book</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\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">authors</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ManyToManyField</span><span class=\"p\">(</span><span class=\"s2\">&quot;Author&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">publisher</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\">Publisher</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\">publication_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Anois ní mór dúinn dearcadh a shainiú:</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\"># 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\">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\">Publisher</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PublisherListView</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\">Publisher</span>\n</code></pre></div>\n<p>Ar deireadh, cuir an radharc sin isteach i do urls:</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\">books.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">PublisherListView</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;publishers/&quot;</span><span class=\"p\">,</span> <span class=\"n\">PublisherListView</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>Sin an cód Python go léir a chaithfimid a scríobh. Ní mór dúinn teimpléad a scríobh fós, áfach. D'fhéadfaimis a insint go sainráite don radharc cén teimpléad atá le húsáid trí thréith <code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code> a chur leis an radharc, ach in éagmais teimpléad follasach tabharfaidh Django amach ceann ó ainm an réada. Sa chás seo, is é <code class=\"docutils literal notranslate\"><span class=\"pre\">”</span> <span class=\"pre\">books/publisher_list.html</span> <span class=\"pre\">“</span></code> an teimpléad intuartha - tagann an chuid “leabhair” ó ainm an aip a shainmhíníonn an tsamhail, agus is é an giotán “foilsitheora” an leagan íseal d'ainm an tsamhail.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Dá bhrí sin, nuair a shocraítear (mar shampla) an rogha <code class=\"docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code> de chúltaca <code class=\"docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code> go Fíor in:setting: TEMPLATES, d'fhéadfadh suíomh teimpléad a bheith: /path/to/project/books/templates/books/publisher_list.html</p>\n</aside>\n<p>Déanfar an teimpléad seo a léiriú i gcoinne comhthéacs ina bhfuil athróg ar a dtugtar object_list` ina bhfuil na rudaí foilsitheora go léir. D'fhéadfadh cuma seo a bheith ar theimpléad:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">h2</span><span class=\"p\">&gt;</span>Publishers<span class=\"p\">&lt;/</span><span class=\"nt\">h2</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">publisher</span> <span class=\"k\">in</span> <span class=\"nv\">object_list</span> <span class=\"cp\">%}</span>\n            <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">publisher.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Sin go léir atá ann i ndáiríre. Tagann gnéithe fionnuar uile na tuairimí cineálacha ó na tréithe atá leagtha amach ar an radharc cineálach a athrú. Déan:doc: tagairt tuairimí cineálacha '&lt;/ref/class-based-views/index&gt; doiciméadaíonn na tuairimí cineálacha go léir agus a roghanna go mion; breithneoidh an chuid eile den doiciméad seo cuid de na bealaí coitianta a d'fhéadfá tuairimí cineálacha a shaincheapadh agus a leathnú.</p>\n<section id=\"making-friendly-template-contexts\">\n<h3>Comhthéacsanna teimpléid “cairdiúla”<a class=\"heading-anchor\" href=\"#making-friendly-template-contexts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>B'fhéidir gur thug tú faoi deara go stórálann ár dteimpléad liosta foilsitheoirí samplach na foilsitheoirí go léir in athróg darb ainm object_list`. Cé go n-oibríonn sé seo go breá, níl sé chomh “cairdiúil” sin d'údair teimpléid: caithfidh siad “a fhios” a bheith acu go bhfuil siad ag déileáil le foilsitheoirí anseo.</p>\n<p>Bhuel, má tá tú ag déileáil le réad samhail, déantar é seo duit cheana féin. Nuair a bhíonn tú ag déileáil le réad nó tacar fiosrúcháin, tá Django in ann an comhthéacs a líonadh ag baint úsáide as an leagan íseal d'ainm an ranga samhail. Cuirtear é seo ar fáil i dteannta leis an iontráil réamhshocraithe <code class=\"docutils literal notranslate\"><span class=\"pre\">object_list</span></code>, ach tá na sonraí céanna go díreach ann, ie <code class=\"docutils literal notranslate\"><span class=\"pre\">publisher_list</span></code>.</p>\n<p>Mura meaitseáil mhaith é seo fós, is féidir leat ainm an athróg comhthéacs a shocrú de láimh. Sonraíonn an tréith <code class=\"docutils literal notranslate\"><span class=\"pre\">context_object_name</span></code> ar amharc cineálach an t-athróg comhthéacs atá le húsáid:</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\"># 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\">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\">Publisher</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PublisherListView</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\">Publisher</span>\n    <span class=\"n\">context_object_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;my_favorite_publishers&quot;</span>\n</code></pre></div>\n<p>Is smaoineamh maith i gcónaí é <code class=\"docutils literal notranslate\"><span class=\"pre\">context_object_name</span></code> úsáideach a sholáthar. Gabhfaidh do chomhoibrithe a dhearann teimpléid buíochas leat.</p>\n</section>\n<section id=\"adding-extra-context\">\n<span id=\"id1\"></span><h3>Comhthéacs breise leis<a class=\"heading-anchor\" href=\"#adding-extra-context\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Go minic ní mór duit roinnt faisnéise breise a chur i láthair seachas an rud a sholáthraíonn an dearcadh cineálach. Mar shampla, smaoinigh ar liosta de na leabhair go léir a thaispeáint ar leathanach mionsonraí gach foilsitheora. Soláthraíonn amharc cineálach: Class: ~django.views.generic.detail.detailView don fhoilsitheoir don chomhthéacs, ach conas a gheobhaidh muid faisnéis bhreise sa teimpléad sin?</p>\n<p>Is é an freagra ar subclass:class: ~django.views.generic.detail.detailView agus cuir do chur i bhfeidhm féin ar an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_context_data <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a sholáthar. Cuireann an cur i bhfeidhm réamhshocraithe an réad atá á thaispeáint leis an teimpléad, ach is féidir leat é a shárú chun níos mó a sheoladh:</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.generic</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">DetailView</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><span class=\"p\">,</span> <span class=\"n\">Publisher</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PublisherDetailView</span><span class=\"p\">(</span><span class=\"n\">DetailView</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Publisher</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_context_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Call the base implementation first to get a context</span>\n        <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_context_data</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"c1\"># Add in a QuerySet of all the books</span>\n        <span class=\"n\">context</span><span class=\"p\">[</span><span class=\"s2\">&quot;book_list&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">Book</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"n\">context</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Go ginearálta, cumasóidh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_context_data <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>sonraí comhthéacs gach rang tuismitheora le sonraí an ranga reatha. Chun an t-iompar seo a chaomhnú i do ranganna féin inar mian leat an comhthéacs a athrú, ba cheart duit a bheith cinnte glaoch ar <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>get_context_data <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>ar an sár-rang. Nuair nach ndéanann dhá rang iarracht an eochair chéanna a shainiú, tabharfaidh sé seo na torthaí a bhfuil súil leo. Mar sin féin má dhéanann aon rang iarracht eochair a shárú tar éis do ranganna tuismitheoirí é a shocrú (tar éis an glao ar an sár-scoth), beidh ar aon pháistí den rang sin é a shocrú go sainráite i ndiaidh an super más mian leo a bheith cinnte go gcuirfidh siad gach tuismitheoir a shárú. Má tá trioblóid agat, déan athbhreithniú ar ord réitigh modh do dhearcadh.</p>\n<p>Breithniú eile is ea go gcuirfidh na sonraí comhthéacs ó thuairimí cineálacha aicmbunaithe ar shárú sonraí a sholáthraíonn próiseálaithe comhthéacs; féach:meth: ~django.views.generic.detail.singleObjectMixin.get_context_data mar shampla.</p>\n</aside>\n</section>\n<section id=\"viewing-subsets-of-objects\">\n<span id=\"generic-views-list-subsets\"></span><h3>Ag féachaint ar fhothacair rudaí<a class=\"heading-anchor\" href=\"#viewing-subsets-of-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Anois déanaimis breathnú níos dlúithe ar an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">samhail</span> <span class=\"pre\">``a</span> <span class=\"pre\">bhí</span> <span class=\"pre\">á</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">againn</span> <span class=\"pre\">ar</span> <span class=\"pre\">fad.</span> <span class=\"pre\">Tá</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">``samhail</span> <span class=\"pre\">``,</span> <span class=\"pre\">a</span> <span class=\"pre\">shonraíonn</span> <span class=\"pre\">an</span> <span class=\"pre\">tsamhail</span> <span class=\"pre\">bunachar</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">ar</span> <span class=\"pre\">a</span> <span class=\"pre\">oibreoidh</span> <span class=\"pre\">an</span> <span class=\"pre\">dearcadh</span> <span class=\"pre\">air,</span> <span class=\"pre\">ar</span> <span class=\"pre\">fáil</span> <span class=\"pre\">ar</span> <span class=\"pre\">na</span> <span class=\"pre\">tuairimí</span> <span class=\"pre\">cineálacha</span> <span class=\"pre\">go</span> <span class=\"pre\">léir</span> <span class=\"pre\">a</span> <span class=\"pre\">oibríonn</span> <span class=\"pre\">ar</span> <span class=\"pre\">réad</span> <span class=\"pre\">amháin</span> <span class=\"pre\">nó</span> <span class=\"pre\">ar</span> <span class=\"pre\">bhailiúchán</span> <span class=\"pre\">rudaí.</span> <span class=\"pre\">Mar</span> <span class=\"pre\">sin</span> <span class=\"pre\">féin,</span> <span class=\"pre\">ní</span> <span class=\"pre\">hé</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">``samhail</span> <span class=\"pre\">``an</span> <span class=\"pre\">t-aon</span> <span class=\"pre\">bhealach</span> <span class=\"pre\">chun</span> <span class=\"pre\">na</span> <span class=\"pre\">rudaí</span> <span class=\"pre\">a</span> <span class=\"pre\">oibreoidh</span> <span class=\"pre\">an</span> <span class=\"pre\">dearcadh</span> <span class=\"pre\">orthu</span> <span class=\"pre\">a</span> <span class=\"pre\">shonrú</span> <span class=\"pre\">-</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">leat</span> <span class=\"pre\">liosta</span> <span class=\"pre\">na</span> <span class=\"pre\">rudaí</span> <span class=\"pre\">a</span> <span class=\"pre\">shonrú</span> <span class=\"pre\">ag</span> <span class=\"pre\">baint</span> <span class=\"pre\">úsáide</span> <span class=\"pre\">as</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">``Queryset</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\">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\">DetailView</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\">Publisher</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PublisherDetailView</span><span class=\"p\">(</span><span class=\"n\">DetailView</span><span class=\"p\">):</span>\n    <span class=\"n\">context_object_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;publisher&quot;</span>\n    <span class=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"n\">Publisher</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Is gearrthéacs é <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span> <span class=\"pre\">=</span> <span class=\"pre\">Foilsitheoir</span> <span class=\"pre\">``a</span> <span class=\"pre\">shonrú</span> <span class=\"pre\">chun</span> <span class=\"pre\">``queryset</span> <span class=\"pre\">=</span> <span class=\"pre\">Publisher.Objects.all</span> <span class=\"pre\">()</span></code> a rá. Mar sin féin, trí úsáid a bhaint as <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> chun liosta scagtha rudaí a shainiú is féidir leat a bheith níos sainiúla faoi na rudaí a bheidh le feiceáil sa radharc (féach: Doc: /topics/db/queries le haghaidh tuilleadh faisnéise fao:class: ~django.db.models.queryset rudaí, agus féach an tagair:doc: rang-bhunaithe tuairim le haghaidh na &lt;/ref/class-based-views/index&gt; sonraí iomlána).</p>\n<p>Chun sampla a roghnú, b'fhéidir gur mhaith linn liosta leabhair a ordú de réir dáta foilsithe, agus an chéad cheann is déanaí:</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.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\">queryset</span> <span class=\"o\">=</span> <span class=\"n\">Book</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-publication_date&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">context_object_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;book_list&quot;</span>\n</code></pre></div>\n<p>Is sampla beag go leor é sin, ach léiríonn sé an smaoineamh go deas. De ghnáth beidh tú ag iarraidh níos mó a dhéanamh ná rudaí a athordú amháin. Más mian leat liosta leabhair ag foilsitheoir áirithe a chur i láthair, is féidir leat an teicníc chéanna a úsáid:</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.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\">AcmeBookListView</span><span class=\"p\">(</span><span class=\"n\">ListView</span><span class=\"p\">):</span>\n    <span class=\"n\">context_object_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;book_list&quot;</span>\n    <span class=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"n\">Book</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\">publisher__name</span><span class=\"o\">=</span><span class=\"s2\">&quot;ACME Publishing&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;books/acme_list.html&quot;</span>\n</code></pre></div>\n<p>Tabhair faoi deara go bhfuilimid ag úsáid ainm teimpléad saincheaptha in éineacht le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>queryset <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>scagtha. Mura ndéanfaimis, úsáidfeadh an dearcadh cineálach an teimpléad céanna leis an liosta réada “vanilla”, rud b'fhéidir nach é an rud a theastaíonn uainn.</p>\n<p>Tabhair faoi deara freisin nach bealach an-galánta é seo chun leabhair a bhaineann go sonrach don fhoilsitheoir a dhéanamh. Más mian linn leathanach foilsitheora eile a chur leis, bheadh dornán línte eile ag teastáil uainn sa URLConf, agus bheadh níos mó ná cúpla foilsitheoir míréasúnach. Déileálfaimid leis an bhfadhb seo sa chéad chuid eile.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>If you get a 404 when requesting <code class=\"docutils literal notranslate\"><span class=\"pre\">/books/acme/</span></code>, check to ensure you\nactually have a Publisher with the name 'ACME Publishing'. Generic\nviews have an <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_empty</span></code> parameter for this case. See the\n<a class=\"reference internal\" href=\"/ga/6.0/ref/class-based-views/\"><span class=\"doc\">class-based-views reference</span></a> for more\ndetails.</p>\n</aside>\n</section>\n<section id=\"dynamic-filtering\">\n<h3>Scagadh dinimiciúil<a class=\"heading-anchor\" href=\"#dynamic-filtering\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Another common need is to filter down the objects given in a list page by some\nkey in the URL. Earlier we hardcoded the publisher's name in the URLconf, but\nwhat if we wanted to write a view that displayed all the books by some\narbitrary publisher?</p>\n<p>Go háirithe, tá a: meth: ~django.views.generic.list.multipleObjectMixin.get_querySet modh is féidir linn a shárú. De réir réamhshocraithe, filleann sé luach an tréith <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>queryset <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, ach is féidir linn é a úsáid chun níos mó loighic a chur leis.</p>\n<p>Is é an phríomhchuid chun an obair seo a dhéanamh ná go stóráiltear rudaí úsáideacha éagsúla ar féin nuair a thugtar tuairimí rang-bhunaithe; chomh maith leis an iarratas (self.request`) san áireamh seo argóintí seasmhacha (self.args`) agus ainmbunaithe (self.kwargs`) a ghabhadh de réir an URLConf.</p>\n<p>Anseo, tá URLConf againn le grúpa gabhadh amhá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=\"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\">books.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">PublisherBookListView</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/&lt;publisher&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">PublisherBookListView</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>Ansin, scríobhfaimid an radharc <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>PublisherBookListView <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>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=\"c1\"># views.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_object_or_404</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><span class=\"p\">,</span> <span class=\"n\">Publisher</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PublisherBookListView</span><span class=\"p\">(</span><span class=\"n\">ListView</span><span class=\"p\">):</span>\n    <span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;books/books_by_publisher.html&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_queryset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">publisher</span> <span class=\"o\">=</span> <span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">Publisher</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;publisher&quot;</span><span class=\"p\">])</span>\n        <span class=\"k\">return</span> <span class=\"n\">Book</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\">publisher</span><span class=\"o\">=</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">publisher</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Tá úsáid a bhaint as <code class=\"docutils literal notranslate\"><span class=\"pre\">get_queryset</span></code> chun loighic a chur leis an roghnú cueryset chomh áisiúil agus atá sé cumhachtach. Mar shampla, dá dteastaíonn uainn, d'fhéadfaimis <code class=\"docutils literal notranslate\"><span class=\"pre\">self.request.user</span></code> a úsáid chun scagadh ag baint úsáide as an úsáideoir reatha, nó loighic níos casta eile.</p>\n<p>Is féidir linn an foilsitheoir a chur isteach sa chomhthéacs ag an am céanna, ionas gur féidir linn é a úsáid sa teimpléad:</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\"># ...</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_context_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Call the base implementation first to get a context</span>\n    <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_context_data</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n    <span class=\"c1\"># Add in the publisher</span>\n    <span class=\"n\">context</span><span class=\"p\">[</span><span class=\"s2\">&quot;publisher&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">publisher</span>\n    <span class=\"k\">return</span> <span class=\"n\">context</span>\n</code></pre></div>\n</section>\n<section id=\"performing-extra-work\">\n<span id=\"generic-views-extra-work\"></span><h3>Obair bhreise a dhéanamh<a class=\"heading-anchor\" href=\"#performing-extra-work\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is éard atá i gceist leis an bpatrún coitianta deireanach a bhreathnóimid air roinnt oibre breise a dhéanamh roimh nó tar éis glaoch ar an dear</p>\n<p>Samhlaigh go raibh réimse <code class=\"docutils literal notranslate\"><span class=\"pre\">las_accessed</span></code> againn ar ár samhail <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Author <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a bhí á úsáid againn chun súil a choinneáil ar an uair dheireanach a d'fhéach duine ar bith ar an údar sin:</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\"># models.py</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\">Author</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\">salutation</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"n\">email</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">EmailField</span><span class=\"p\">()</span>\n    <span class=\"n\">headshot</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ImageField</span><span class=\"p\">(</span><span class=\"n\">upload_to</span><span class=\"o\">=</span><span class=\"s2\">&quot;author_headshots&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">last_accessed</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateTimeField</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Ní bheadh aon rud ar eolas ag an rang cineálach <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>DetailView <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>faoin réimse seo, ach arís d'fhéadfaimis dearcadh saincheaptha a scríobh chun an réimse sin a choinneáil nuashonraithe.</p>\n<p>Ar dtús, bheadh orainn giotán mionsonraithe údair a chur leis sa URLConf chun dearcadh saincheaptha a chur in iúl:</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\">AuthorDetailView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;authors/&lt;int:pk&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">AuthorDetailView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;author-detail&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Ansin scríobhfaimis ár dtuairim nua - is é <code class=\"docutils literal notranslate\"><span class=\"pre\">get_object</span></code> an modh a aisghabhann an réad - mar sin déanaimid é a shárú agus fillteann muid an glao:</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.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</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\">DetailView</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\">Author</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorDetailView</span><span class=\"p\">(</span><span class=\"n\">DetailView</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_object</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_object</span><span class=\"p\">()</span>\n        <span class=\"c1\"># Record the last accessed date</span>\n        <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">last_accessed</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n        <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"n\">obj</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Úsáideann an URLConf anseo an grúpa ainmnithe pk` - is é an t-ainm seo an t-ainm réamhshocraithe a úsáideann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>DetailView` chun luach an phríomh-eochair a úsáidtear chun an tacar fiosrúcháin a scagadh a aimsiú.</p>\n<p>Más mian leat rud éigin eile a ghlaoch ar an ngrúpa, is féidir leat: attr: ~django.views.generic.detail.singleObjectMixin.pk_URL_kwarg a shocrú ar an radharc.</p>\n</aside>\n</section>\n</section>","rootId":"built-in-class-based-generic-views","toc":[{"title":"Tuairimí cineálacha a le","anchor":"extending-generic-views","children":[]},{"title":"Tuairimí cineálacha ar rudaí","anchor":"generic-views-of-objects","children":[{"title":"Comhthéacsanna teimpléid “cairdiúla”","anchor":"making-friendly-template-contexts","children":[]},{"title":"Comhthéacs breise leis","anchor":"adding-extra-context","children":[]},{"title":"Ag féachaint ar fhothacair rudaí","anchor":"viewing-subsets-of-objects","children":[]},{"title":"Scagadh dinimiciúil","anchor":"dynamic-filtering","children":[]},{"title":"Obair bhreise a dhéanamh","anchor":"performing-extra-work","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.0/topics/"},{"docname":"topics/class-based-views/index","title":"Tuairimí rang-bhunaithe","url":"/ga/6.0/topics/class-based-views/"}],"prev":{"docname":"topics/class-based-views/intro","title":"Réamhrá ar thuairimí rangbhunaithe","url":"/ga/6.0/topics/class-based-views/intro/"},"next":{"docname":"topics/class-based-views/generic-editing","title":"Láimhseáil foirme le tuairimí rangbhunaithe","url":"/ga/6.0/topics/class-based-views/generic-editing/"},"formats":{"html":"/ga/6.0/topics/class-based-views/generic-display/","markdown":"/ga/6.0/topics/class-based-views/generic-display.md","json":"/ga/6.0/topics/class-based-views/generic-display.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/class-based-views/generic-display.txt","official":"https://docs.djangoproject.com/ga/6.0/topics/class-based-views/generic-display/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}