{"title":"Ardteagasc: Conas aipeanna in-athúsáidte a scríobh","version":"5.2","locale":"ga","docname":"intro/reusable-apps","url":"/ga/5.2/intro/reusable-apps/","canonical":"https://djangodocs.dev/ga/5.2/intro/reusable-apps/","summary":"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…","html":"<h1>Ardteagasc: Conas aipeanna in-athúsáidte a scríobh<a class=\"heading-anchor\" href=\"#advanced-tutorial-how-to-write-reusable-apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Tosaíonn an rang teagaisc chun cinn seo nuair a d'fhág :d oc: Tutorial 8 &lt; / intro/tutorial08&gt; 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.</p>\n<p>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.</p>\n<section id=\"reusability-matters\">\n<h2>Baineann cúrsaí ath-inúsáidte<a class=\"heading-anchor\" href=\"#reusability-matters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>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?</p>\n<p>Is é reusability an bealach maireachtála i Python. <a class=\"reference external\" href=\"https://pypi.org/\">The Python Package Index (PyPI)</a> tá réimse leathan pacáistí ann ar féidir leat a úsáid i do chláir Python féin. Amharc ar <a class=\"reference external\" href=\"https://djangopackages.org\">Django Packages</a> 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.</p>\n<p>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 &lt;/intro/tutorial01&gt;, chonaiceamar conas a d'fhéadfaimis pobalbhreitheanna a dhíchúpláil ón URLconf ar leibhéal an tionscadail ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">include</span></code>. 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.</p>\n<aside class=\"admonition-package-app admonition\">\n<p class=\"admonition-title\">Pacáiste? Aip?</p>\n<p>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 &quot;modúil&quot;) i bpacáiste.</p>\n<p>Is féidir pacáiste a allmhairiú le `` import foo.bar`` nó <code class=\"docutils literal notranslate\"><span class=\"pre\">ó</span> <span class=\"pre\">foo</span> <span class=\"pre\">import</span> <span class=\"pre\">bar</span></code>. Chun pacáiste a fhoirmiú i gcomhadlann (cosúil le <code class=\"docutils literal notranslate\"><span class=\"pre\">vótaíocht</span></code>), caithfidh comhad speisialta `` __init__.py`` a bheith ann, fiú má tá an comhad seo folamh.</p>\n<p>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 <code class=\"docutils literal notranslate\"><span class=\"pre\">samhlacha</span></code>, `` tástálacha``, `` urls``, agus <code class=\"docutils literal notranslate\"><span class=\"pre\">views</span></code>.</p>\n<p>Níos déanaí bainimid úsáid as an téarma <em>pacáistiú</em> 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.</p>\n</aside>\n</section>\n<section id=\"your-project-and-your-reusable-app\">\n<h2>Do thionscadal agus d'aip ath-inúsáidte<a class=\"heading-anchor\" href=\"#your-project-and-your-reusable-app\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tar éis na ranganna teagaisc roimhe seo, ba chóir go mbeadh cuma mar seo ar ár dtionscadal:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</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=\"Text code\"><code>djangotutorial/\n    manage.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n        asgi.py\n        wsgi.py\n    polls/\n        __init__.py\n        admin.py\n        apps.py\n        migrations/\n            __init__.py\n            0001_initial.py\n        models.py\n        static/\n            polls/\n                images/\n                    background.png\n                style.css\n        templates/\n            polls/\n                detail.html\n                index.html\n                results.html\n        tests.py\n        urls.py\n        views.py\n    templates/\n        admin/\n            base_site.html\n</code></pre></div>\n<p>Chruthaigh tú <code class=\"docutils literal notranslate\"><span class=\"pre\">djangotutorial/templates</span></code> in :d oc:'Tutorial 7 &lt;/intro/tutorial07&gt;', agus <code class=\"docutils literal notranslate\"><span class=\"pre\">polls/templates</span></code> in :d oc:'Tutorial 3 &lt;/intro/tutorial03&gt;'. 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 <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code>. Déanann sé an t-iarratas féinchuimsitheach agus níos éasca le titim isteach i dtionscadal nua.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> directory could now be copied into a new Django project and\nimmediately reused. It's not quite ready to be published though. For that, we\nneed to package the app to make it easy for others to install.</p>\n</section>\n<section id=\"installing-some-prerequisites\">\n<span id=\"installing-reusable-apps-prerequisites\"></span><h2>Roinnt réamhriachtanais a shuiteáil<a class=\"heading-anchor\" href=\"#installing-some-prerequisites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá staid reatha pacáistiú Python beagán measctha le huirlisí éagsúla. Don rang teagaisc seo, úsáidfimid <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/setuptools/\">setuptools</a> chun ár bpacáiste a thógáil. Is é an uirlis pacáistithe molta é (cumasc leis an bhforc <code class=\"docutils literal notranslate\"><span class=\"pre\">distribute</span></code>). Beidh <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/pip/\">pip</a> á ú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 <a class=\"reference internal\" href=\"/ga/5.2/topics/install/#installing-official-release\"><span class=\"std std-ref\">conas Django a shuiteáil le pip</span></a>. Is féidir leat `` setuptools`` a shuiteáil ar an mbealach céanna.</p>\n</section>\n<section id=\"packaging-your-app\">\n<h2>Pacáistiú d'aip<a class=\"heading-anchor\" href=\"#packaging-your-app\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is éard atá i gceist le Python <em>phacáistiú</em> 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.</p>\n<ol class=\"arabic\">\n<li><p>Ar dtús, cruthaigh máthairchomhadlann don phacáiste, lasmuigh de do thionscadal Django. Glaoigh ar an eolaire seo <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code>.</p>\n<aside class=\"admonition-choosing-a-name-for-your-app admonition\">\n<p class=\"admonition-title\">Ainm a roghnú do d'fheidhmchlár</p>\n<p>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 <code class=\"docutils literal notranslate\"><span class=\"pre\">django-</span></code>  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 <code class=\"docutils literal notranslate\"><span class=\"pre\">django_</span></code> d'ainm an mhodúil. Mar shampla, tá an modúl <code class=\"docutils literal notranslate\"><span class=\"pre\">django-ratelimit</span></code> sa phacáiste <code class=\"docutils literal notranslate\"><span class=\"pre\">django_ratelimit</span></code>.</p>\n<p>Ní mór lipéid iarratais (is é sin, an chuid deiridh den chosán poncaithe chuig pacáistí iarratais) <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>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 &lt;/ref/contrib/index&gt;', mar shampla <code class=\"docutils literal notranslate\"><span class=\"pre\">auth</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code>, nó <code class=\"docutils literal notranslate\"><span class=\"pre\">messages</span></code>.</p>\n</aside>\n</li>\n<li><p>Bog an t-eolaire <code class=\"docutils literal notranslate\"><span class=\"pre\">polls`</span> <span class=\"pre\">isteach</span> <span class=\"pre\">san</span> <span class=\"pre\">eolaire``django-polls</span></code> , agus athainmnigh é go``django_polls``.</p></li>\n<li><p>Cuir <code class=\"docutils literal notranslate\"><span class=\"pre\">django_polls/apps.py</span></code> in eagar ionas go mbeidh :attr:'~. Tagraíonn AppConfig.name' d'ainm an mhodúil nua agus cuir :attr:'~. AppConfig.label' chun ainm gearr a thabhairt ar an bhfeidhmchlár:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/django_polls/apps.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AppConfig</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PollsConfig</span><span class=\"p\">(</span><span class=\"n\">AppConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">default_auto_field</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.db.models.BigAutoField&quot;</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django_polls&quot;</span>\n    <span class=\"n\">label</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;polls&quot;</span>\n</code></pre></figure>\n</li>\n<li><p>Cruthaigh comhad <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/README.rst</span></code> leis an ábhar seo a leanas:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"rst\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/README.rst</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</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=\"Rst code\"><code><span class=\"gh\">============</span>\n<span class=\"gh\">django-polls</span>\n<span class=\"gh\">============</span>\n\ndjango-polls is a Django app to conduct web-based polls. For each\nquestion, visitors can choose between a fixed number of answers.\n\nDetailed documentation is in the &quot;docs&quot; directory.\n\n<span class=\"gh\">Quick start</span>\n<span class=\"gh\">-----------</span>\n\n<span class=\"m\">1.</span> Add &quot;polls&quot; to your INSTALLED_APPS setting like this::\n\n    INSTALLED_APPS = [\n<span class=\"c\">        ...,</span>\n<span class=\"c\">        &quot;django_polls&quot;,</span>\n<span class=\"c\">    ]</span>\n\n<span class=\"m\">2.</span> Include the polls URLconf in your project urls.py like this::\n\n    path(&quot;polls/&quot;, include(&quot;django_polls.urls&quot;)),\n\n<span class=\"m\">3.</span> Run <span class=\"s\">``python manage.py migrate``</span> to create the models.\n\n<span class=\"m\">4.</span> Start the development server and visit the admin to create a poll.\n\n<span class=\"m\">5.</span> Visit the <span class=\"s\">``/polls/``</span> URL to participate in the poll.\n</code></pre></figure>\n</li>\n<li><p>Cruthaigh comhad <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/LICENSE</span></code>. 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 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>useless <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">*</span></a>. 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.</p></li>\n<li><p>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 <a class=\"reference external\" href=\"https://packaging.python.org/guides/writing-pyproject-toml/\">Python Packaging User Guide</a>. Cruthaigh an comhad <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/pyproject.toml</span></code> leis an ábhar seo a leanas:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"toml\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/pyproject.toml</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Toml</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=\"Toml code\"><code><span class=\"k\">[build-system]</span>\n<span class=\"n\">requires</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">[</span><span class=\"s2\">&quot;setuptools&gt;83&quot;</span><span class=\"p\">]</span>\n<span class=\"n\">build-backend</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;setuptools.build_meta&quot;</span>\n\n<span class=\"k\">[project]</span>\n<span class=\"n\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;django-polls&quot;</span>\n<span class=\"n\">version</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;0.1&quot;</span>\n<span class=\"n\">dependencies</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">[</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;django&gt;=X.Y&quot;</span><span class=\"p\">,</span><span class=\"w\">  </span><span class=\"c1\"># Replace &quot;X.Y&quot; as appropriate</span>\n<span class=\"p\">]</span>\n<span class=\"n\">description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;A Django app to conduct web-based polls.&quot;</span>\n<span class=\"n\">readme</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;README.rst&quot;</span>\n<span class=\"n\">license</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;BSD-3-Clause&quot;</span>\n<span class=\"n\">requires-python</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;&gt;= 3.10&quot;</span>\n<span class=\"n\">authors</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">[</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"n\">name</span><span class=\"w\"> </span><span class=\"p\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;Your Name&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">email</span><span class=\"w\"> </span><span class=\"p\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;yourname@example.com&quot;</span><span class=\"p\">},</span>\n<span class=\"p\">]</span>\n<span class=\"n\">classifiers</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">[</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Environment :: Web Environment&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Framework :: Django&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Framework :: Django :: X.Y&quot;</span><span class=\"p\">,</span><span class=\"w\">  </span><span class=\"c1\"># Replace &quot;X.Y&quot; as appropriate</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Intended Audience :: Developers&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Operating System :: OS Independent&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3 :: Only&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3.10&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3.11&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3.12&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3.13&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Programming Language :: Python :: 3.14&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Topic :: Internet :: WWW/HTTP&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;Topic :: Internet :: WWW/HTTP :: Dynamic Content&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n\n<span class=\"k\">[project.urls]</span>\n<span class=\"n\">Homepage</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;https://www.example.com/&quot;</span>\n</code></pre></figure>\n</li>\n<li><p>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 <code class=\"docutils literal notranslate\"><span class=\"pre\">MANIFEST.in</span></code> a chruthú. Chun na teimpléid agus na comhaid statacha a chur san áireamh, cruthaigh comhad <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/MANIFEST.in</span></code> leis an ábhar seo a leanas:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"text\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/MANIFEST.in</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</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=\"Text code\"><code>recursive-include django_polls/static *\nrecursive-include django_polls/templates *\n</code></pre></figure>\n</li>\n<li><p>Tá sé roghnach, ach moltar é, doiciméid mhionsonraithe a chur san áireamh le d'aip. Cruthaigh eolaire folamh <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls/docs</span></code>  le haghaidh doiciméadú amach anseo.</p>\n<p>Tabhair faoi deara nach mbeidh an t-eolaire <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> 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 <a class=\"reference external\" href=\"https://readthedocs.org\">readthedocs.org</a>.</p>\n<p>Many Python projects, including Django and Python itself, use <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/quickstart.html\">Sphinx</a> to build\ntheir documentation. If you choose to use Sphinx you can link back to the\nDjango documentation by configuring <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/quickstart.html#intersphinx\">Intersphinx</a>\nand including a value for Django in your project's <code class=\"docutils literal notranslate\"><span class=\"pre\">intersphinx_mapping</span></code>\nvalue:</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=\"n\">intersphinx_mapping</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"s2\">&quot;django&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span>\n        <span class=\"s2\">&quot;https://docs.djangoproject.com/en/stable/&quot;</span><span class=\"p\">,</span>\n        <span class=\"kc\">None</span><span class=\"p\">,</span>\n    <span class=\"p\">),</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>With that in place, you can then cross-link to specific entries, in the\nsame way as in the Django docs, such as\n&quot;<code class=\"docutils literal notranslate\"><span class=\"pre\">:attr:`django.test.TransactionTestCase.databases`</span></code>&quot;.</p>\n</li>\n<li><p>Check that the <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/build/\">build</a> package is installed (<code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-m</span> <span class=\"pre\">pip</span> <span class=\"pre\">install</span>\n<span class=\"pre\">build</span></code>) and try building your package by running <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-m</span> <span class=\"pre\">build</span></code> inside\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code>. This creates a directory called <code class=\"docutils literal notranslate\"><span class=\"pre\">dist</span></code> and builds your\nnew package into source and binary formats, <code class=\"docutils literal notranslate\"><span class=\"pre\">django_polls-0.1.tar.gz</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django_polls-0.1-py3-none-any.whl</span></code>.</p></li>\n</ol>\n<p>Le haghaidh tuilleadh eolais ar phacáistiú, féach Tutorial on Packaging and Distributing Projects &lt;https://packaging.python.org/tutorials/packaging-projects/&gt; le <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">Python_</span></a>.</p>\n</section>\n<section id=\"using-your-own-package\">\n<h2>Do phacáiste féin a úsáid<a class=\"heading-anchor\" href=\"#using-your-own-package\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ó bhogamar an t-eolaire <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> amach as an tionscadal, níl sé ag obair a thuilleadh. Déanfaimid é seo a shocrú anois trínár bpacáiste nua <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code> a shuiteáil.</p>\n<aside class=\"admonition-installing-as-a-user-library admonition\">\n<p class=\"admonition-title\">Suiteáil mar leabharlann úsáideora</p>\n<p>Suiteáil na céimeanna seo a leanas <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code> 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.</p>\n<p>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).</p>\n</aside>\n<ol class=\"arabic\">\n<li><p>Chun an pacáiste a shuiteáil, bain úsáid as pip (tá tú cheana féin: ref: 'suiteáilte sé &lt;installing-reusable-apps-prerequisites&gt;', ceart?):</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</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=\"Shell code\"><code>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>--user<span class=\"w\"> </span>django-polls/dist/django_polls-0.1.tar.gz\n</code></pre></div>\n</li>\n<li><p>Nuashonraigh <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite/settings.py</span></code> chun ainm an mhodúil nua 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=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s2\">&quot;django_polls.apps.PollsConfig&quot;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>Nuashonraigh <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite/urls.py</span></code> chun ainm an mhodúil nua 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=\"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;polls/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;django_polls.urls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>Rith an freastalaí forbartha chun a dheimhniú go leanann an tionscadal ag obair.</p></li>\n</ol>\n</section>\n<section id=\"publishing-your-app\">\n<h2>D'aip a fhoilsiú<a class=\"heading-anchor\" href=\"#publishing-your-app\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Anois agus <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code> 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:</p>\n<ul class=\"simple\">\n<li><p>Ríomhphost an pacáiste chuig cara.</p></li>\n<li><p>Uaslódáil an pacáiste ar do láithreán gréasáin.</p></li>\n<li><p>Cuir an pacáiste ar stór poiblí, mar shampla <a class=\"reference external\" href=\"https://pypi.org/\">Innéacs Pacáiste Python (PyPI)</a>. Tá <a class=\"reference external\" href=\"https://packaging.python.org\">packaging.python.org</a> <a class=\"reference external\" href=\"https://packaging.python.org/tutorials/packaging-projects/#uploading-the-distribution-archives\">a good tutorial</a> chun é seo a dhéanamh.</p></li>\n</ul>\n</section>\n<section id=\"installing-python-packages-with-a-virtual-environment\">\n<h2>Pacáistí Python a shuiteáil le timpeallacht fhíorúil<a class=\"heading-anchor\" href=\"#installing-python-packages-with-a-virtual-environment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Níos luaithe, shuiteáil muid <code class=\"docutils literal notranslate\"><span class=\"pre\">django-polls</span></code> mar leabharlann úsáideora. Tá roinnt míbhuntáistí ag baint leis seo:</p>\n<ul class=\"simple\">\n<li><p>Is féidir le modhnú na leabharlanna úsáideora dul i bhfeidhm ar bhogearraí Python eile ar do chóras.</p></li>\n<li><p>Ní bheidh tú in ann leaganacha iolracha den phacáiste seo (nó leaganacha eile leis an ainm céanna) a rith.</p></li>\n</ul>\n<p>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á <a class=\"reference external\" href=\"https://docs.python.org/3/tutorial/venv.html\" title=\"(in Python v3.14)\"><span class=\"xref std std-doc\">venv</span></a> 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.</p>\n</section>","rootId":"advanced-tutorial-how-to-write-reusable-apps","toc":[{"title":"Baineann cúrsaí ath-inúsáidte","anchor":"reusability-matters","children":[]},{"title":"Do thionscadal agus d'aip ath-inúsáidte","anchor":"your-project-and-your-reusable-app","children":[]},{"title":"Roinnt réamhriachtanais a shuiteáil","anchor":"installing-some-prerequisites","children":[]},{"title":"Pacáistiú d'aip","anchor":"packaging-your-app","children":[]},{"title":"Do phacáiste féin a úsáid","anchor":"using-your-own-package","children":[]},{"title":"D'aip a fhoilsiú","anchor":"publishing-your-app","children":[]},{"title":"Pacáistí Python a shuiteáil le timpeallacht fhíorúil","anchor":"installing-python-packages-with-a-virtual-environment","children":[]}],"breadcrumbs":[{"docname":"intro/index","title":"Ag tosnú","url":"/ga/5.2/intro/"}],"prev":{"docname":"intro/tutorial08","title":"Do chéad aip Django a scríobh, cuid 8","url":"/ga/5.2/intro/tutorial08/"},"next":{"docname":"intro/whatsnext","title":"Cad atá le léamh ina dhiaidh sin","url":"/ga/5.2/intro/whatsnext/"},"formats":{"html":"/ga/5.2/intro/reusable-apps/","markdown":"/ga/5.2/intro/reusable-apps.md","json":"/ga/5.2/intro/reusable-apps.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/intro/reusable-apps.txt","official":"https://docs.djangoproject.com/ga/5.2/intro/reusable-apps/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}