---
title: "Creat na teachtaireachtaí"
version: 6.0
locale: ga
source: https://docs.djangoproject.com/ga/6.0/ref/contrib/messages/
canonical: https://djangodocs.dev/ga/6.0/ref/contrib/messages/
---
# Creat na teachtaireachtaí

Go coitianta in iarratais gréasáin, ní mór duit teachtaireacht fógra aon-uaire (ar a dtugtar “teachtaireacht splanc” freisin) a thaispeáint don úsáideoir tar éis foirm nó cineálacha éigin eile ionchuir úsáideora a phróiseáil.

Chuige seo, soláthraíonn Django tacaíocht iomlán do theachtaireachtaí bunaithe ar fhianán agus seisiún, d'úsáideoirí gan ainm agus fíordheimhnithe araon. Ligeann an creat teachtaireachtaí duit teachtaireachtaí a stóráil go sealadach in iarratas amháin agus iad a aisghabháil le taispeáint in iarratas ina dhiaidh sin (an chéad cheann eile de ghnáth). Tá “leibhéal” ar leith clibeáilte ar gach teachtaireacht a chinneann a thosaíocht (m.sh., `info`, rabhadh \`, nó `earráid`).

## Teachtaireachtaí a chum

Cuirtear teachtaireachtaí i bhfeidhm trí aicme a:doc: middleware agus comhfhreagraí:doc: próiseálaí comhthéacs \</ref/middleware\> \</ref/templates/api\>.

Tá na socruithe go léir a theastaíonn chun feidhmiúlacht teachtaireachta a chumasú sa réamhshocraithe `settings.py` a chruthaigh `django-admin startproject` cheana féin:

- Tá 'django.contrib.messages'\` in:setting: INSTALLED\_APPS.
- [`MIDDLEWARE`](/ga/6.0/ref/settings/#std-setting-MIDDLEWARE) contains
  `'django.contrib.sessions.middleware.SessionMiddleware'` and
  `'django.contrib.messages.middleware.MessageMiddleware'`.

  \</topics/http/sessions\> \<message-storage-backends\>Braitheann an réamhshocraithe:ref: backend stórála \`ar:doc: \`seisiúin. Sin an fáth go gcaithfear `SessionMiddleware` a chumasú agus a bheith le feiceáil roimh `MessageMiddleware` in:setting: MIDDLEWARE.
- Tá `django.contrib.messages.context_processors.messages'` sa rogha ```context_processors' ``den chúlcheann ``DjangoTemplates``` a shainmhínítear i do shuíomh: TEMPLATES.

Mura dteastaíonn uait teachtaireachtaí a úsáid, is féidir leat django.contrib.messages'\` a bhaint as d':setting: INSTALLED\_APPS, an líne MessageMiddleware\` ó:setting: MIDDLEWARE, agus an próiseálaí comhthéacs teachtaireachtaí \`\`ó:setting: \`TEMPLATES.

## An t-inneall teachtaireachta a chumrú

### Cúltaca stórála

Is féidir leis an gcreat teachtaireachtaí cúltaca éagsúla a úsáid chun teachtaireachtaí sealadacha a stó

Soláthraíonn Django trí rang stórála ionsuite in:mod: django.contrib.messages:

#### `class storage.session.SessionStorage`

Stórálann an rang seo gach teachtaireacht taobh istigh de sheisiún an iarratais. Dá bhrí sin éilíonn sé iarratas contrib.sessions\` Django.

#### `class storage.cookie.CookieStorage`

Stórálann an rang seo sonraí na teachtaireachta i bhfianán (sínithe le hash rúnda chun ionramháil a chosc) chun fógraí a leanúint ar fud iarratais. Scaoiltear seantheachtaireachtaí dá mbeadh méid na sonraí fianán níos mó ná 2048 beát.

#### `class storage.fallback.FallbackStorage`

Úsáideann an rang seo CookieStorage\` den chéad uair, agus titim siar ar `SessionStorage` a úsáid do na teachtaireachtaí nach bhféadfadh a bheith oiriúnach i bhfianán amháin. Éilíonn sé freisin iarratas contrib.sessions\` Django.

Seachnaíonn an t-iompar seo scríobh chuig an seisiún nuair is féidir. Ba chóir dó an fheidhmíocht is fearr a sholáthar sa chás ginearálta.

[`FallbackStorage`](#django.contrib.messages.storage.fallback.FallbackStorage) is the
default storage class. If it isn't suitable to your needs, you can select
another storage class by setting [`MESSAGE_STORAGE`](/ga/6.0/ref/settings/#std-setting-MESSAGE_STORAGE) to its full import
path, for example:

```
MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"
```

#### `class storage.base.BaseStorage`

Chun do rang stórála féin a scríobh, fo-aicmigh an rang `BaseStorage` i `django.contrib.messages.storage.base` agus cuir na modhanna `_get` agus `_store` i bhfeidhm.

### Leibhéil teachtaire

Tá creat na teachtaireachtaí bunaithe ar ailtireacht leibhéal inchumraithe cosúil le hailtireacht an mhodúl logála Python. Ligeann leibhéil teachtaireachtaí duit teachtaireachtaí a ghrúpáil de réir cineálacha ionas gur féidir iad a scagadh nó a thaispeáint go difriúil i

Is iad na leibhéil ionsuite, ar féidir iad a allmhairiú go díreach ó `django.contrib.messages`:

| Tairiseach | Cuspóir |
| --- | --- |
| `DEBUG` | Teachtaireachtaí a bhaineann le forbairt a ndéanfar neamhaird orthu (nó a bhaint) in imscaradh táirgeachta |
| EOLAS \`\` | Teachtaireachtaí faisnéise don úsáideoir |
| RATH \`\` | D'éirigh le gníomh, m.sh. “Nuashonraíodh do phróifíl go rathúil” |
| RABHADH \`\` | Níor tharla teip ach d'fhéadfadh sé a bheith le teacht |
| `EARRÁID` | Níor éirigh le gníomh nó tharla teip éigin eile |

Is féidir an socrú: SETTING: MESSAGE\_LEVEL a úsáid chun an leibhéal íosta taifeadta a athrú (nó is féidir é a [athrú in aghaidh an iarrata](#changing-the-minimum-recorded-level-per-request)). Déanfar neamhaird ar iarrachtaí teachtaireachtaí de leibhéal níos lú ná seo a chur leis.

### Clibeanna teachtaireachta

Is léiriú teaghrán iad clibeanna teachtaireachta ar leibhéal na teachtaireachta móide aon chlibeanna breise a cuireadh go díreach sa radharc (féach Clibeanna teachtaireachta breise a chur leis \_ thíos le haghaidh tuilleadh sonraí). Stóráiltear clibeanna i sreang agus tá siad scartha le spásanna. De ghnáth, úsáidtear clibeanna teachtaireachta mar ranganna CSS chun stíl teachtaireachta a shaincheapadh bunaithe ar chineál teachtai De réir réamhshocraithe, tá clib amháin ag gach leibhéal atá ina leagan beag dá tairiseach féin:

| Leibhéal Tairiseach | Clib |
| --- | --- |
| `DEBUG` | `Debug` |
| EOLAS \`\` | eolas \`\` |
| RATH \`\` | rath \`\` |
| RABHADH \`\` | rabhadh \`\` |
| `EARRÁID` | `earráid` |

Chun na clibeanna réamhshocraithe do leibhéal teachtaireachta a athrú (ionsuite nó saincheaptha), socraigh an socrú:setting: MESSAGE\_TAGS chuig foclóir ina bhfuil na leibhéil is mian leat a athrú. De réir mar a leathnaíonn sé seo na clibeanna réamhshocraithe, ní gá duit ach clibeanna a sholáthar do na leibhéil is mian leat a shárú:

```
from django.contrib.messages import constants as messages

MESSAGE_TAGS = {
    messages.INFO: "",
    50: "critical",
}
```

## Ag baint úsáide as teachtaireachtaí i radhairc

#### `add_message(request, level, message, extra_tags='', fail_silently=False)`

### Teachtaireacht a chur leis

Chun teachtaireacht a chur leis, glaoigh ar:

```
from django.contrib import messages

messages.add_message(request, messages.INFO, "Hello world.")
```

Soláthraíonn roinnt modhanna aicearra bealach caighdeánach chun teachtaireachtaí a chur le clibeanna a úsáidtear go coitianta (a léirítear de ghnáth mar ranganna HTML don teachtaireacht):

```
messages.debug(request, "%s SQL statements were executed." % count)
messages.info(request, "Three credits remain in your account.")
messages.success(request, "Profile details updated.")
messages.warning(request, "Your account expires in three days.")
messages.error(request, "Document deleted.")
```

### Teachtaireachtaí a th

#### `get_messages(request)`

\*\* I do theimpléad\*\*, bain úsáid as rud éigin mar:

```html+django
{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
```

Má tá an próiseálaí comhthéacs á úsáid agat, ba chóir do theimpléad a léiriú le `RequestContext`. Seachas sin, cinntigh go bhfuil teachtaireachtaí ar fáil do chomhthéacs an teimpléid.

Fiú má tá a fhios agat nach bhfuil ach teachtaireacht amháin ann, ba cheart duit athrá a dhéanamh fós thar an seicheamh teachtaireachtaí , mar ar shlí eile ní ghlanfar an stóráil teachtaireachta don chéad iarratas eile.

Soláthraíonn an próiseálaí comhthéacs athróg `DEFAULT_MESSAGE_LEVELS` freisin ar mhapáil ar ainmneacha leibhéal na teachtaireachta ar a luach uimhriúil:

```html+django
{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>
        {% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}Important: {% endif %}
        {{ message }}
    </li>
    {% endfor %}
</ul>
{% endif %}
```

**Taobh amuigh de theimpléid**, is féidir leat úsáid a úsáid:func: ~django.contrib.messages.get\_messages:

```
from django.contrib.messages import get_messages

storage = get_messages(request)
for message in storage:
    do_something_with_the_message(message)
```

\<jsonresponsemixin-example\>Mar shampla, is féidir leat na teachtaireachtaí go léir a fháil chun iad a thabhairt ar ais in a:ref: JsonResponseMixin \`in ionad a:class: \`~Django.Views.Generic.Base.TemplateResponseMixin.

[`get_messages()`](#django.contrib.messages.get_messages) will return an
instance of the configured storage backend.

### An rang Teachtaireacht \`\`

#### `class Message`

Nuair a bhíonn tú ag lúb thar liosta na dteachtaireachtaí i dteimpléad, is cásanna den rang Teachtaireacht a fhaigheann tú. Níl ach cúpla tréith acu:

- teachtaireacht : Téacs iarbhír na teachtaireachta.
- leibhéil : Sláimhir a thuairiscíonn cineál na teachtaireachta (féach an chuid leibhéil teachtaireachtaí \_ thuas).
- `tags`: Sreang a chomhcheanglaíonn clibeanna uile na teachtaireachta (`extra_tags` agus `level_tag`) scartha le spásanna.
- `extra_tags`: Sreang ina bhfuil clibeanna saincheaptha don teachtaireacht seo, scartha le spásanna. Tá sé folamh de réir réamhshocraithe.
- `level_tag`: An léiriú teaghrán ar an leibhéal. De réir réamhshocraithe, is é an leagan beaga d'ainm an tairiseach gaolmhar é, ach is féidir é seo a athrú más gá duit tríd an socrú: setting: MESSAGE\_TAGS a úsáid.

### Leibhéil teachtaireachta saincheaptha

Níl aon rud níos mó ná sláimhreacha iad leibhéil teachtaireachtaí, ionas gur féidir leat do choirmeannaigh leibhéil féin a shainiú agus iad a úsáid chun aiseolas úsáideoirí níos saincheaptha a chruthú, m.sh.:

```
CRITICAL = 50

def my_view(request):
    messages.add_message(request, CRITICAL, "A serious error occurred.")
```

Agus leibhéil teachtaireachta saincheaptha á chruthú agat ba chóir duit a bheith cúramach chun ró-ualú a sheachaint Is iad na luachanna do na leibhéil ionsuite:

| Leibhéal Tairiseach | Luach |
| --- | --- |
| `DEBUG` | 10 |
| EOLAS \`\` | 20 |
| RATH \`\` | 25 |
| RABHADH \`\` | 30 |
| `EARRÁID` | 40 |

Más gá duit na leibhéil saincheaptha i do HTML nó CSS a aithint, ní mór duit mapáil a sholáthar tríd an socrú: setting: MESSAGE\_TAGS.

> **Note**
>
> Má tá feidhmchlár in-athúsáidte á chruthú agat, moltar ach na leibhéil teachtaireachtaí \_ ionsuite a úsáid agus gan brath ar aon leibhéil saincheaptha.

### An leibhéal íosta taifeadta in aghaidh an iarratais

Is féidir an leibhéal íosta taifeadta a shocrú in aghaidh an iarratais tríd an modh set\_level:

```
from django.contrib import messages

# Change the messages level to ensure the debug message is added.
messages.set_level(request, messages.DEBUG)
messages.debug(request, "Test message...")

# In another request, record only messages with a level of WARNING and higher
messages.set_level(request, messages.WARNING)
messages.success(request, "Your profile was updated.")  # ignored
messages.warning(request, "Your account is about to expire.")  # recorded

# Set the messages level back to default.
messages.set_level(request, None)
```

Ar an gcaoi chéanna, is féidir an leibhéal éifeachtach reatha a aisghabháil le get\_level\`:

```
from django.contrib import messages

current_level = messages.get_level(request)
```

Le haghaidh tuilleadh faisnéise faoi conas a fheidhmíonn an leibhéal íosta taifeadta, féach Leibhéil teachtaireachtaí \_ thuas

### Clibeanna teachtaireachta breise

Le haghaidh rialú níos díreach ar chlibeanna teachtaireachta, is féidir leat sreang ina bhfuil clibeanna breise a sholáthar go roghnach le haon cheann de na modhanna breise:

```
messages.add_message(request, messages.INFO, "Over 9000!", extra_tags="dragonball")
messages.error(request, "Email box full", extra_tags="email")
```

Cuirtear clibeanna breise leis roimh an gclib réamhshocraithe don leibhéal sin agus tá spás scartha orthu.

### Teipeann sé go ciúin nuair a dhéantar creat na teachtaireachta a

Má tá tú ag scríobh aip in-athúsáidte (nó píosa cód eile) agus má theastaíonn uait feidhmiúlacht teachtaireachtaí a áireamh, ach mura dteastaíonn uait a cheangal ar d'úsáideoirí é a chumasú mura dteastaíonn uathu, féadfaidh tú argóint eochairfhocal breise `fail_silently=true` a chur chuig aon cheann de na modhanna `add_message`. Mar shampla:

```
messages.add_message(
    request,
    messages.SUCCESS,
    "Profile details updated.",
    fail_silently=True,
)
messages.info(request, "Hello world.", fail_silently=True)
```

> **Note**
>
> Ní folaíonn socrú `fail_silently=True` ach an MessageFailure\` a tharlódh ar shlí eile nuair a dhíchumasaíonn creat na teachtaireachtaí agus déanann duine iarracht ceann de theaghlach modhanna `add_message` a úsáid. Ní cheilíonn sé teipeanna a d'fhéadfadh tarlú ar chúiseanna eile.

### Teachtaireachtaí a chur leis i radhairc rang-bhunaithe

#### `class views.SuccessMessageMixin`

Cuireann tréith teachtaireachta rathúlachta leis a:class: ~django.views.generic.edit.formView ranganna bunaithe

#### `get_success_message(cleaned_data)`

Is é cleaned\_data na sonraí glanta ón bhfoirm a úsáidtear le haghaidh formáidiú teaghrán

**Amharcanna sampla.py**:

```
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreateView(SuccessMessageMixin, CreateView):
    model = Author
    success_url = "/success/"
    success_message = "%(name)s was created successfully"
```

Tá na sonraí glanta ón ```foirm ``ar fáil le haghaidh idirphóireacht sreangán ag baint úsáide as an gcomhréir ``% (field_name) s```. Maidir le ModelForms, má theastaíonn rochtain uait ar réimsí ón `object` shábháilte, athraigh an modh:meth: ~django.contrib.messages.views.successMessageMixin.get\_success\_message.

**Sampla views.py le haghaidh ModelForms**:

```
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import ComplicatedModel

class ComplicatedCreateView(SuccessMessageMixin, CreateView):
    model = ComplicatedModel
    success_url = "/success/"
    success_message = "%(calculated_field)s was created successfully"

    def get_success_message(self, cleaned_data):
        return self.success_message % dict(
            cleaned_data,
            calculated_field=self.object.calculated_field,
        )
```

## Teachtaireachtaí in éag

Tá na teachtaireachtaí marcáilte le glanadh nuair a dhéantar an cás stórála a athrá (agus a ghlanadh nuair a dhéantar an freagra a phróiseáil).

Chun na teachtaireachtaí a sheachaint a ghlanadh, is féidir leat stóráil na dteachtaireachtaí a shocrú go False\` tar éis iad a athrú:

```
storage = messages.get_messages(request)
for message in storage:
    do_something_with(message)
storage.used = False
```

## Iompar iarrataí comhthreomhara

Mar gheall ar an mbealach a oibríonn fianáin (agus dá bhrí sin seisiúin), **ní shainmhínítear iompar aon chúltaca a úsáideann fianáin nó seisiúin nuair a dhéanann an cliant céanna iolracha iarrataí a leagann nó a fhaigheann teachtaireachtaí comhthreomhaol**. Mar shampla, má thionscnaíonn cliant iarratas a chruthaíonn teachtaireacht i bhfuinneog amháin (nó cluaisín) agus ansin ceann eile a fhaigheann aon teachtaireachtaí neamhliteartha i bhfuinneog eile, sula ndéanann an chéad fhuinneog a atreorú, féadfaidh an teachtaireacht a bheith le feiceáil sa dara fuinneog in ionad an chéad fhuinneog inar féidir a bheith ag súil leis.

I mbeagán focal, nuair a bhíonn iliarratais chomhuaineach ón gcliant céanna i gceist, ní ráthaítear go seachadfar teachtaireachtaí chuig an bhfuinneog chéanna a chruthaigh iad ná, i gcásanna áirithe, ar chor ar bith. Tabhair faoi deara nach fadhb í seo de ghnáth i bhformhór na bhfeidhmchlár agus go mbeidh sé ina neamhcheist i HTML5, áit a mbeidh a chomhthéacs brabhsála féin ag gach fuinneog/cluaisín.

## Socruithe

Tugann beaga:ref: socruithe \<settings-messages\>\`smacht duit ar iompar teachtaireachta:

- [`MESSAGE_LEVEL`](/ga/6.0/ref/settings/#std-setting-MESSAGE_LEVEL)
- [`MESSAGE_STORAGE`](/ga/6.0/ref/settings/#std-setting-MESSAGE_STORAGE)
- [`MESSAGE_TAGS`](/ga/6.0/ref/settings/#std-setting-MESSAGE_TAGS)

Maidir le cúltaca a úsáideann fianáin, tógtar na socruithe don fhianán ó na socruithe fianán seisiúin:

- [`SESSION_COOKIE_DOMAIN`](/ga/6.0/ref/settings/#std-setting-SESSION_COOKIE_DOMAIN)
- [`SESSION_COOKIE_SECURE`](/ga/6.0/ref/settings/#std-setting-SESSION_COOKIE_SECURE)
- [`SESSION_COOKIE_HTTPONLY`](/ga/6.0/ref/settings/#std-setting-SESSION_COOKIE_HTTPONLY)

## Tástáil

Cuireann an modúl seo modh dearbhaithe tástála saincheaptha ar fáil, chun teachtaireachtaí atá ceangailte le ha:class: ~.httpResponse a thástáil.

Chun leas a bhaint as an dearbhú seo, cuir `MessagestestMixin` leis an ordlathas ranga:

```
from django.contrib.messages.test import MessagesTestMixin
from django.test import TestCase

class MsgTestCase(MessagesTestMixin, TestCase):
    pass
```

Ansin, oidhreacht ón MsgTestCase\` i do thástálacha.

#### `MessagesTestMixin.assertMessages(response, expected_messages, ordered=True)`

\<django.http.HttpResponse\>Deilíonn sé gur:mod: ~django.contrib.messages a chuirtear leis an: class: response a mheaitseálann teachtaireachtaí a bhí ag súil leis teachtaireachtaí a bhí ag súil leis.

Is é `expected_messages` liosta de:class: ~django.contrib.messages.message rudaí.

De réir réamhshocraithe, tá an comparáid ag brath ar ordú. Is féidir leat é seo a dhíchumasú tríd an argóint ```ordaithe ``a shocrú go ``False```.
