---
title: "Ardteagasc: Conas aipeanna in-athúsáidte a scríobh"
version: 6.0
locale: ga
source: https://docs.djangoproject.com/ga/6.0/intro/reusable-apps/
canonical: https://djangodocs.dev/ga/6.0/intro/reusable-apps/
---
# Ardteagasc: Conas aipeanna in-athúsáidte a scríobh

Tosaíonn an rang teagaisc chun cinn seo nuair a d'fhág :d oc: Tutorial 8 \< / intro/tutorial08\> as. Beimid ag casadh ár vótaíocht gréasáin i bpacáiste Python neamhspleách is féidir leat a athúsáid i dtionscadail nua agus a roinnt le daoine eile.

Mura bhfuil Ranganna Teagaisc 1–8 críochnaithe agat le déanaí, molaimid duit iad seo a athbhreithniú ionas go mbeidh do thionscadal samplach ag teacht leis an gceann a gcuirtear síos air thíos.

## Baineann cúrsaí ath-inúsáidte

Tá sé a lán oibre a dhearadh, a thógáil, a thástáil agus a chothabháil iarratas gréasáin. Tá fadhbanna coitianta ag go leor tionscadal Python agus Django. Nach mbeadh sé go hiontach dá bhféadfaimis cuid den obair seo a shábháil arís agus arís eile?

Is é reusability an bealach maireachtála i Python. [The Python Package Index (PyPI)](https://pypi.org/) tá réimse leathan pacáistí ann ar féidir leat a úsáid i do chláir Python féin. Amharc ar [Django Packages](https://djangopackages.org) le haghaidh feidhmchláir in-athúsáidte atá ann cheana a d'fhéadfá a ionchorprú i do thionscadal. Is gnáthphacáiste Python é Django féin freisin. Ciallaíonn sé seo gur féidir leat pacáistí Python nó feidhmchláir Django atá ann cheana féin a ghlacadh agus iad a chumadh i do thionscadal gréasáin féin. Ní gá duit ach na codanna a dhéanann do thionscadal uathúil a scríobh.

Deirimid go raibh tú ag cur tús le tionscadal nua a raibh aip pobalbhreithe ag teastáil uaidh cosúil leis an gceann a raibh muid ag obair air. Conas a dhéantar an aip seo a athúsáid? Ar ámharaí an tsaoil, tá tú go maith ar an mbealach cheana féin. In :d oc:Tutorial 1 \</intro/tutorial01\>, chonaiceamar conas a d'fhéadfaimis pobalbhreitheanna a dhíchúpláil ón URLconf ar leibhéal an tionscadail ag baint úsáide as `include`. Sa rang teagaisc seo, glacfaimid céimeanna breise chun an aip a dhéanamh éasca le húsáid i dtionscadail nua agus réidh le foilsiú do dhaoine eile le suiteáil agus le húsáid.

> **Pacáiste? Aip?**
>
> A Python :term: soláthraíonn pacáiste bealach chun cód Python gaolmhar a ghrúpáil le haghaidh athúsáid éasca. Tá comhad amháin nó níos mó de chód Python (ar a dtugtar "modúil") i bpacáiste.
>
> Is féidir pacáiste a allmhairiú le \`\` import foo.bar\`\` nó `ó foo import bar`. Chun pacáiste a fhoirmiú i gcomhadlann (cosúil le `vótaíocht`), caithfidh comhad speisialta \`\` \_\_init\_\_.py\`\` a bheith ann, fiú má tá an comhad seo folamh.
>
> Is pacáiste Python é iarratas Django \*\* atá beartaithe go sonrach lena úsáid i dtionscadal Django. Féadfaidh feidhmchlár gnásanna coitianta Django a úsáid, mar shampla fo-mhodúil `samhlacha`, \`\` tástálacha\`\`, \`\` urls\`\`, agus `views`.
>
> Níos déanaí bainimid úsáid as an téarma *pacáistiú* chun cur síos a dhéanamh ar an bpróiseas chun pacáiste Python a dhéanamh éasca do dhaoine eile a shuiteáil. Is féidir leis a bheith beagán mearbhall, tá a fhios againn.

## Do thionscadal agus d'aip ath-inúsáidte

Tar éis na ranganna teagaisc roimhe seo, ba chóir go mbeadh cuma mar seo ar ár dtionscadal:

```text
djangotutorial/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
            0001_initial.py
        models.py
        static/
            polls/
                images/
                    background.png
                style.css
        templates/
            polls/
                detail.html
                index.html
                results.html
        tests.py
        urls.py
        views.py
    templates/
        admin/
            base_site.html
```

Chruthaigh tú `djangotutorial/templates` in :d oc:'Tutorial 7 \</intro/tutorial07\>', agus `polls/templates` in :d oc:'Tutorial 3 \</intro/tutorial03\>'. Anois, b'fhéidir go bhfuil sé níos soiléire cén fáth ar roghnaigh muid eolairí teimpléid ar leith a bheith againn don tionscadal agus don chur i bhfeidhm: tá gach rud atá mar chuid d'iarratas na bpobalbhreitheanna i `polls`. Déanann sé an t-iarratas féinchuimsitheach agus níos éasca le titim isteach i dtionscadal nua.

The `polls` directory could now be copied into a new Django project and
immediately reused. It's not quite ready to be published though. For that, we
need to package the app to make it easy for others to install.

## Roinnt réamhriachtanais a shuiteáil

Tá staid reatha pacáistiú Python beagán measctha le huirlisí éagsúla. Don rang teagaisc seo, úsáidfimid [setuptools](https://pypi.org/project/setuptools/) chun ár bpacáiste a thógáil. Is é an uirlis pacáistithe molta é (cumasc leis an bhforc `distribute`). Beidh [pip](https://pypi.org/project/pip/) á úsáid againn freisin chun é a shuiteáil agus a dhíshuiteáil. Ba cheart duit an dá phacáiste seo a shuiteáil anois. Má tá cabhair uait, is féidir leat tagairt a dhéanamh do [conas Django a shuiteáil le pip](/ga/6.0/topics/install/#installing-official-release). Is féidir leat \`\` setuptools\`\` a shuiteáil ar an mbealach céanna.

## Pacáistiú d'aip

Is éard atá i gceist le Python *phacáistiú* ná d’aip a ullmhú i bhformáid ar leith ar féidir é a shuiteáil agus a úsáid go héasca. Tá Django féin pacáistithe go mór mar seo. I gcás aip bheag cosúil le pobalbhreith, níl an próiseas seo ró-dheacair.

1. Ar dtús, cruthaigh máthairchomhadlann don phacáiste, lasmuigh de do thionscadal Django. Glaoigh ar an eolaire seo `django-polls`.

   > **Ainm a roghnú do d'fheidhmchlár**
   >
   > Agus ainm á roghnú agat do do phacáiste, seiceáil PyPI chun coinbhleachtaí le pacáistí atá ann cheana a sheachaint. Molaimid réimír `django-`  a úsáid le haghaidh ainmneacha pacáiste, chun do phacáiste a aithint mar phacáiste a bhaineann go sonrach le Django, agus réimír chomhfhreagrach `django_` d'ainm an mhodúil. Mar shampla, tá an modúl `django-ratelimit` sa phacáiste `django_ratelimit`.
   >
   > Ní mór lipéid iarratais (is é sin, an chuid deiridh den chosán poncaithe chuig pacáistí iarratais) a bheith uathúil i :setting:'INSTALLED\_APPS'. Seachain an lipéad céanna a úsáid le haon cheann de na pacáistí Django :d oc:'contrib packages \</ref/contrib/index\>', mar shampla `auth`, `admin`, nó `messages`.
2. Bog an t-eolaire ```polls` isteach san eolaire``django-polls``` , agus athainmnigh é go\`\`django\_polls\`\`.
3. Edit `django_polls/apps.py` so that [`name`](/ga/6.0/ref/applications/#django.apps.AppConfig.name) refers to the
   new module name, add [`label`](/ga/6.0/ref/applications/#django.apps.AppConfig.label) to give a short name for
   the app, and set [`default_auto_field`](/ga/6.0/ref/applications/#django.apps.AppConfig.default_auto_field) to ensure your
   migrations are not affected by changes to [`DEFAULT_AUTO_FIELD`](/ga/6.0/ref/settings/#std-setting-DEFAULT_AUTO_FIELD)
   made by users of your reusable app:

   *`django-polls/django_polls/apps.py`*

   ```python
   from django.apps import AppConfig

   class PollsConfig(AppConfig):
       default_auto_field = "django.db.models.BigAutoField"
       name = "django_polls"
       label = "polls"
   ```
4. Cruthaigh comhad `django-polls/README.rst` leis an ábhar seo a leanas:

   *`django-polls/README.rst`*

   ```rst
   ============
   django-polls
   ============

   django-polls is a Django app to conduct web-based polls. For each
   question, visitors can choose between a fixed number of answers.

   Detailed documentation is in the "docs" directory.

   Quick start
   -----------

   1. Add "polls" to your INSTALLED_APPS setting like this::

       INSTALLED_APPS = [
           ...,
           "django_polls",
       ]

   2. Include the polls URLconf in your project urls.py like this::

       path("polls/", include("django_polls.urls")),

   3. Run ``python manage.py migrate`` to create the models.

   4. Start the development server and visit the admin to create a poll.

   5. Visit the ``/polls/`` URL to participate in the poll.
   ```
5. Cruthaigh comhad `django-polls/LICENSE`. Tá roghnú ceadúnais thar raon feidhme an teagaisc seo, ach is leor a rá go bhfuil an cód a scaoiltear go poiblí gan cheadúnas useless . Django agus go leor apps Django-comhoiriúnach a dháileadh faoin gceadúnas BSD; mar sin féin, tá tú saor in aisce do cheadúnas féin a roghnú. Just a bheith ar an eolas go mbeidh tionchar ag do rogha ceadúnaithe ar cé atá in ann do chód a úsáid.
6. Ansin cruthóimid an comhad \`\` pyproject.toml\`\` ina sonraítear conas an aip a thógáil agus a shuiteáil. Tá míniú iomlán ar an gcomhad seo lasmuigh de scóip an teagaisc seo, ach tá míniú maith ar an [Python Packaging User Guide](https://packaging.python.org/guides/writing-pyproject-toml/). Cruthaigh an comhad `django-polls/pyproject.toml` leis an ábhar seo a leanas:

   *`django-polls/pyproject.toml`*

   ```toml
   [build-system]
   requires = ["setuptools>83"]
   build-backend = "setuptools.build_meta"

   [project]
   name = "django-polls"
   version = "0.1"
   dependencies = [
       "django>=X.Y",  # Replace "X.Y" as appropriate
   ]
   description = "A Django app to conduct web-based polls."
   readme = "README.rst"
   license = "BSD-3-Clause"
   requires-python = ">= 3.12"
   authors = [
       {name = "Your Name", email = "yourname@example.com"},
   ]
   classifiers = [
       "Environment :: Web Environment",
       "Framework :: Django",
       "Framework :: Django :: X.Y",  # Replace "X.Y" as appropriate
       "Intended Audience :: Developers",
       "Operating System :: OS Independent",
       "Programming Language :: Python",
       "Programming Language :: Python :: 3",
       "Programming Language :: Python :: 3 :: Only",
       "Programming Language :: Python :: 3.12",
       "Programming Language :: Python :: 3.13",
       "Programming Language :: Python :: 3.14",
       "Topic :: Internet :: WWW/HTTP",
       "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
   ]

   [project.urls]
   Homepage = "https://www.example.com/"
   ```
7. Tá go leor comhad coitianta agus modúil agus pacáistí Python san áireamh sa phacáiste de réir réamhshocraithe. Chun comhaid bhreise a chur san áireamh, beidh orainn comhad `MANIFEST.in` a chruthú. Chun na teimpléid agus na comhaid statacha a chur san áireamh, cruthaigh comhad `django-polls/MANIFEST.in` leis an ábhar seo a leanas:

   *`django-polls/MANIFEST.in`*

   ```text
   recursive-include django_polls/static *
   recursive-include django_polls/templates *
   ```
8. Tá sé roghnach, ach moltar é, doiciméid mhionsonraithe a chur san áireamh le d'aip. Cruthaigh eolaire folamh `django-polls/docs`  le haghaidh doiciméadú amach anseo.

   Tabhair faoi deara nach mbeidh an t-eolaire `docs` san áireamh i do phacáiste mura gcuireann tú roinnt comhad leis. Soláthraíonn go leor aipeanna Django a ndoiciméadú ar líne freisin trí shuíomhanna mar [readthedocs.org](https://readthedocs.org).

   Many Python projects, including Django and Python itself, use [Sphinx](https://www.sphinx-doc.org/en/master/usage/quickstart.html) to build
   their documentation. If you choose to use Sphinx you can link back to the
   Django documentation by configuring [Intersphinx](https://www.sphinx-doc.org/en/master/usage/quickstart.html#intersphinx)
   and including a value for Django in your project's `intersphinx_mapping`
   value:

   ```
   intersphinx_mapping = {
       # ...
       "django": (
           "https://docs.djangoproject.com/en/stable/",
           None,
       ),
   }
   ```

   With that in place, you can then cross-link to specific entries, in the
   same way as in the Django docs, such as
   "`` :attr:`django.test.TransactionTestCase.databases` ``".
9. Check that the [build](https://pypi.org/project/build/) package is installed (`python -m pip install
   build`) and try building your package by running `python -m build` inside
   `django-polls`. This creates a directory called `dist` and builds your
   new package into source and binary formats, `django_polls-0.1.tar.gz` and
   `django_polls-0.1-py3-none-any.whl`.

Le haghaidh tuilleadh eolais ar phacáistiú, féach Tutorial on Packaging and Distributing Projects \<https://packaging.python.org/tutorials/packaging-projects/\> le .

## Do phacáiste féin a úsáid

Ó bhogamar an t-eolaire `polls` amach as an tionscadal, níl sé ag obair a thuilleadh. Déanfaimid é seo a shocrú anois trínár bpacáiste nua `django-polls` a shuiteáil.

> **Suiteáil mar leabharlann úsáideora**
>
> Suiteáil na céimeanna seo a leanas `django-polls` mar leabharlann úsáideora. Tá go leor buntáistí ag suiteálacha in aghaidh an úsáideora maidir leis an bpacáiste a shuiteáil ar fud an chórais, mar shampla a bheith inúsáidte ar chórais nach bhfuil rochtain riarthóra agat chomh maith le cosc a chur ar an bpacáiste dul i bhfeidhm ar sheirbhísí córais agus ar úsáideoirí eile an mheaisín.
>
> Tabhair faoi deara gur féidir le suiteálacha in aghaidh an úsáideora tionchar a imirt fós ar iompar uirlisí córais a ritheann mar an t-úsáideoir sin, mar sin is réiteach níos láidre é timpeallacht fhíorúil a úsáid (féach thíos).

1. Chun an pacáiste a shuiteáil, bain úsáid as pip (tá tú cheana féin: ref: 'suiteáilte sé \<installing-reusable-apps-prerequisites\>', ceart?):

   ```shell
   python -m pip install --user django-polls/dist/django_polls-0.1.tar.gz
   ```
2. Nuashonraigh `mysite/settings.py` chun ainm an mhodúil nua a chur in iúl:

   ```
   INSTALLED_APPS = [
       "django_polls.apps.PollsConfig",
       ...,
   ]
   ```
3. Nuashonraigh `mysite/urls.py` chun ainm an mhodúil nua a chur in iúl:

   ```
   urlpatterns = [
       path("polls/", include("django_polls.urls")),
       ...,
   ]
   ```
4. Rith an freastalaí forbartha chun a dheimhniú go leanann an tionscadal ag obair.

## D'aip a fhoilsiú

Anois agus `django-polls` pacáistithe agus tástáilte againn, tá sé réidh le roinnt leis an domhan mór! Mura raibh anseo ach sampla, d'fhéadfá anois:

- Ríomhphost an pacáiste chuig cara.
- Uaslódáil an pacáiste ar do láithreán gréasáin.
- Post the package on a public repository, such as [the Python Package Index
  (PyPI)](https://pypi.org/). There is [a good tutorial](https://packaging.python.org/tutorials/packaging-projects/#uploading-the-distribution-archives)
  for doing this.

## Pacáistí Python a shuiteáil le timpeallacht fhíorúil

Níos luaithe, shuiteáil muid `django-polls` mar leabharlann úsáideora. Tá roinnt míbhuntáistí ag baint leis seo:

- Is féidir le modhnú na leabharlanna úsáideora dul i bhfeidhm ar bhogearraí Python eile ar do chóras.
- Ní bheidh tú in ann leaganacha iolracha den phacáiste seo (nó leaganacha eile leis an ainm céanna) a rith.

Go hiondúil, ní thagann na cásanna seo chun cinn ach amháin nuair a bhíonn roinnt tionscadal Django á gcothabháil agat. Nuair a dhéanann siad, is é an réiteach is fearr ná [venv](https://docs.python.org/3/tutorial/venv.html) a úsáid. Ligeann an uirlis seo duit timpeallachtaí iomadúla iargúlta Python a chothabháil, gach ceann acu lena chóip féin de na leabharlanna agus ainmspás an phacáiste.
