Ardteagasc: Conas aipeanna in-athúsáidte a scríobhLink to this heading

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áidteLink to this heading

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

Do thionscadal agus d'aip ath-inúsáidteLink to this heading

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áilLink to this heading

Tá staid reatha pacáistiú Python beagán measctha le huirlisí éagsúla. Don rang teagaisc seo, úsáidfimid setuptools chun ár bpacáiste a thógáil. Is é an uirlis pacáistithe molta é (cumasc leis an bhforc distribute). Beidh 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. Is féidir leat `` setuptools`` a shuiteáil ar an mbealach céanna.

Pacáistiú d'aipLink to this heading

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.

  2. Bog an t-eolaire polls` isteach san eolaire``django-polls , agus athainmnigh é go``django_polls``.

  3. Cuir django_polls/apps.py 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:

    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. 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.10"
    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.10",
        "Programming Language :: Python :: 3.11",
        "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.

    Many Python projects, including Django and Python itself, use Sphinx to build their documentation. If you choose to use Sphinx you can link back to the Django documentation by configuring Intersphinx and including a value for Django in your project's intersphinx_mapping value:

    Code
    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 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 Python_.

Do phacáiste féin a úsáidLink to this heading

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

  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:

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

    Code
    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úLink to this heading

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:

Pacáistí Python a shuiteáil le timpeallacht fhíorúilLink to this heading

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