---
title: "Tuairimí rang-bhunaithe"
version: 5.2
locale: ga
source: https://docs.djangoproject.com/ga/5.2/topics/class-based-views/
canonical: https://djangodocs.dev/ga/5.2/topics/class-based-views/
---
# Tuairimí rang-bhunaithe

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: doiciméadú tagartha tuairimí rang-bhunaithe '\</ref/class-based-views/index\>.

- [Réamhrá ar thuairimí rangbhunaithe](/ga/5.2/topics/class-based-views/intro/)
- [Tuairimí cineálacha bunaithe ar rang ionsuite](/ga/5.2/topics/class-based-views/generic-display/)
- [Láimhseáil foirme le tuairimí rangbhunaithe](/ga/5.2/topics/class-based-views/generic-editing/)
- [Ag baint úsáide as meascáin le tuairimí rangbhunaithe](/ga/5.2/topics/class-based-views/mixins/)

## Samplaí bunúsacha

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.

## Úsáid i do URLConf

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:

```
from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path("about/", TemplateView.as_view(template_name="about.html")),
]
```

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 `template_name` ar an TemplateView\`. Is féidir patrún forbhríoch den chineál céanna a úsáid don tréith url ar:class: ~django.views.Generic.Base.RedirectView.

## Tuairimí cineálacha a fho-aicmiú

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 get\_context\_data ) 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, 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ú:

```
# some_app/views.py
from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"
```

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:

```
# urls.py
from django.urls import path
from some_app.views import AboutView

urlpatterns = [
    path("about/", AboutView.as_view()),
]
```

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: tuairimí cineálacha bunaithe ar aicme'\</topics/class-based-views/generic-display\>.

### Tacú le modhanna HTTP eile

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í.

Déanaimid léarscáil an URL chun amharc liosta a chur in áirithe sa URLConf:

```
from django.urls import path
from books.views import BookListView

urlpatterns = [
    path("books/", BookListView.as_view()),
]
```

Agus an dearcadh:

```
from django.http import HttpResponse
from django.views.generic import ListView
from books.models import Book

class BookListView(ListView):
    model = Book

    def head(self, *args, **kwargs):
        last_book = self.get_queryset().latest("publication_date")
        response = HttpResponse(
            # RFC 1123 date format.
            headers={
                "Last-Modified": last_book.publication_date.strftime(
                    "%a, %d %b %Y %H:%M:%S GMT"
                )
            },
        )
        return response
```

Má dhéantar rochtain ar an radharc ó iarratas `GET`, cuirtear liosta réada ar ais sa fhreagra (ag baint úsáide as an teimpléad `book_list.html`). Ach má eisíonn an cliant iarratas `HEAD`, tá comhlacht folamh ag an bhfreagra agus léiríonn an ceannteideal `` `Last Modfied `` cathain a foilsíodh an leabhar is déanaí. Bunaithe ar an bhfaisnéis seo, féadfaidh an cliant an liosta réad iomlán a íoslódáil nó nach féidir.

## Tuairimí asincrónacha bunaithe ar rang

Chomh maith leis na láimhseálaithe modh sioncrónach (def\`) a thaispeántar cheana féin, féadfaidh fo-aicmí ```View` láimhseálaithe modh asincrónacha (``async def```) a shainiú chun cód asincrónach a ghiaráil ag baint úsáide as `ag fanacht`:

```
import asyncio
from django.http import HttpResponse
from django.views import View

class AsyncView(View):
    async def get(self, request, *args, **kwargs):
        # Perform io-blocking view logic using await, sleep for example.
        await asyncio.sleep(1)
        return HttpResponse("Hello async world!")
```

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 `async def`. Ardófar eisceacht `ImproperlyConfigured` i ```as_view () ``má tá dearbhuithe ``def``` agus async def\` measctha.

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.
