An aip staticfiles`Link to this heading

Bailíonn django.contrib.staticfiles comhaid statacha ó gach ceann de d'iarratais (agus aon áiteanna eile a shonraíonn tú) i suíomh amháin is féidir a sheirbheáil go héasca i dtáirgeadh.

SocruitheLink to this heading

Féach:ref: `socruithe staticfiles <settings-staticfiles>`le haghaidh sonraí faoi na socruithe seo a leanas:

Orduithe BainistíochtaLink to this heading

Nochtann django.contrib.staticfiles trí ordú bainistíochta.

CollectstaticLink to this heading

django-admin collectstaticLink to this definition

Bailíonn sé na comhaid statacha in:setting: STATIC_ROOT.

Réitear ainmneacha comhaid dúblacha de réir réamhshocraithe ar bhealach cosúil leis an gcaoi a n-oibríonn réiteach teimpléid: úsáidfear an comhad a fhaightear den chéad uair i gceann de na háiteanna Má tá mearbhall ort, is féidir leis an ordú:djadmin: findstatic cabhrú leat cé na comhaid atá le fáil a thaispeáint duit.

Ar rith collectstatic ina dhiaidh sin (mura bhfuil STATIC_ROOT folamh), ní chóipeáiltear comhaid ach amháin má tá stampa ama modhnaithe acu níos mó ná stampa ama an chomhaid i STATIC_ROOT`. Dá bhrí sin má bhaineann tú feidhmchlár ó:setting: INSTALLED_APPS, is smaoineamh maith an roghna:option: collectstatic --clear a úsáid chun comhaid statacha seasta a bhaint.

<STATICFILES_FINDERS>Cuardaítear comhaid trí:setting: aimsitheoirí cumasaithe `a úsáid. Is é an réamhshocrú ná breathnú i ngach áit a shainmhínítear in:setting: `STATICFILES_DIRS agus san eolaire ``'static'` d'aipeanna a shonraítear leis an socrú: SETTING: `INSTALLED_APPS.

Glaonn an t-ordú bainistíochta: DjaDmin: collectstatic ar an modh: meth: `~django.contrib.staticfiles.storage.staticfilesStorage.post_process ar an modh cúltaca stórála staticfiles` ó:setting: STORAGES tar éis gach rith agus rith liosta cosáin a aimsíodh ag an ordú bainistíochta. Faigheann sé freisin gach rogha líne ordaithe de:djadmin: collectstatic. Úsáidtear é seo ag an:class: ~django.contrib.staticFiles.Storage.ManifestStaticFilesStorage de réir réamhshocraithe.

De réir réamhshocraithe, faigheann comhaid bailithe ceadanna ó:setting: FILE_UPLOAD_PERMISSIONS agus faigheann eolairí bailithe ceadanna ó:setting: FILE_UPLOAD_DIRECTORY_PERMISSIONS. Más mian leat ceadanna éagsúla do na comhaid agus/nó na heolairí seo, is féidir leat ceachtar de na haicmí stórála comhaid statacha: ref: a fho-aicmiú agus na paraiméadair <staticfiles-storages>file_permissions_mode` agus/nó directory_permissions_mode a shonrú, faoi seach. Mar shampla:

Code
from django.contrib.staticfiles import storage


class MyStaticFilesStorage(storage.StaticFilesStorage):
    def __init__(self, *args, **kwargs):
        kwargs["file_permissions_mode"] = 0o640
        kwargs["directory_permissions_mode"] = 0o760
        super().__init__(*args, **kwargs)

Ansin socraigh an cúltaca stórála staticfiles in:setting: STORAGES socrú go `Path.to.myStaticFilesStorage.

Is iad roinnt roghanna a úsáidtear coitianta:

--noinput, --no-inputLink to this definition

NÁ spreag an t-úsáideoir le haghaidh ionchur de chineál ar bith.

--ignore PATTERN, -i PATTERNLink to this definition

Déan neamhaird ar chomhaid, eolairí nó cosáin a mheaitseann leis an bpatrún stíl Úsáid arís agus arís eile chun neamhaird a dhéanamh de Agus cosán á shonrú agat, bain úsáid as slashes ar aghaidh i gcónaí, fiú ar Windows.

--dry-run, -nLink to this definition

Déan gach rud seachas an córas comhaid a mhodhnú.

--clear, -cLink to this definition

Glanaigh na comhaid atá ann cheana sula ndéanann tú iarracht an comhad bunaidh a chóipeáil nó

Cruthaigh nasc siombalach le gach comhad in ionad cóipeáil.

--no-post-processLink to this definition

Ná glaoigh ar an modh: meth: ~django.contrib.staticfiles.storage.staticFilesStorage.post_process ar an gcúltaca stórála staticfiles cumraithe ó:setting: STORAGES.

--no-default-ignoreLink to this definition

Ná déan neamhaird ar na patrúin choitianta i stíl glob príobháideacha 'CVS', `.*' agus `*~'.

Le haghaidh liosta iomlán roghanna, féach ar na horduithe cabhair féin trí rith:

Linux / macOS

Shell
$ python manage.py collectstatic --help

Windows

Windows
...\> py manage.py collectstatic --help

An liosta patrún a neamhaird a shaincheapadhLink to this heading

Is féidir an liosta patrún réamhshocraithe a neamhaird, ['CVS', '.*', '*~'], a shaincheapadh ar bhealach níos leanúnach ná an rogha ordaithe --ignore a sholáthar ag gach iontráil collectstatic. Cuir aicme saincheapa:class: ~django.apps.appconfig ar fáil, athsháraigh tréith ignore_patterns den rang seo agus cuir ``django.contrib.staticfiles'` in ionad an cosán ranga sin i do shuíomh: INSTALLED_APPS:

Code
from django.contrib.staticfiles.apps import StaticFilesConfig


class MyStaticFilesConfig(StaticFilesConfig):
    ignore_patterns = [...]  # your custom ignore list

findstaticLink to this heading

django-admin findstatic staticfile [staticfile ...]Link to this definition

Cuardaigh cosáin choibhneasta amháin nó níos mó leis na faighteoirí cumasaithe.

Mar shampla:

Linux / macOS

Shell
$ python manage.py findstatic css/base.css admin/js/core.js
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css
  /home/polls.com/core/static/css/base.css
Found 'admin/js/core.js' here:
  /home/polls.com/src/django/contrib/admin/media/js/core.js

Windows

Windows
...\> py manage.py findstatic css\base.css admin\js\core.js
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css
  /home/polls.com/core/static/css/base.css
Found 'admin/js/core.js' here:
  /home/polls.com/src/django/contrib/admin/media/js/core.js
findstatic --firstLink to this definition

De réir réamhshocraithe, faightear gach suíomh meaitseála. Chun an chéad chluiche a thabhairt ar ais amháin do gach cosán coibhneasta, bain úsáid as an rogha --first:

Linux / macOS

Shell
$ python manage.py findstatic css/base.css --first
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css

Windows

Windows
...\> py manage.py findstatic css\base.css --first
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css

Is cúnamh dífhabhtaithe é seo; taispeánfaidh sé duit go díreach cén comhad statach a bhailfear le haghaidh cosán ar leith.

Trí bhratach --verbosity a shocrú go 0, is féidir leat an t-aschur breise a chur faoi chois agus ainmneacha na cosáin a fháil:

Linux / macOS

Shell
$ python manage.py findstatic css/base.css --verbosity 0
/home/special.polls.com/core/static/css/base.css
/home/polls.com/core/static/css/base.css

Windows

Windows
...\> py manage.py findstatic css\base.css --verbosity 0
/home/special.polls.com/core/static/css/base.css
/home/polls.com/core/static/css/base.css

Ar an láimh eile, tríd an bhratach --verbosity a shocrú go 2, is féidir leat na heolairí go léir a cuardaíodh a fháil:

Linux / macOS

Shell
$ python manage.py findstatic css/base.css --verbosity 2
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css
  /home/polls.com/core/static/css/base.css
Looking in the following locations:
  /home/special.polls.com/core/static
  /home/polls.com/core/static
  /some/other/path/static

Windows

Windows
...\> py manage.py findstatic css\base.css --verbosity 2
Found 'css/base.css' here:
  /home/special.polls.com/core/static/css/base.css
  /home/polls.com/core/static/css/base.css
Looking in the following locations:
  /home/special.polls.com/core/static
  /home/polls.com/core/static
  /some/other/path/static

RunserverLink to this heading

django-admin runserver [addrport]

<INSTALLED_APPS>Sáraíonn an t-ordú core: djadmin: runserver más é an aip staticfiles`: setting: suiteáil agus cuireann sé freastal uathoibríoch comhaid statacha leis. Ní ritheann seirbhísiú comhad trí:setting: MIDDLEWARE.

Cuireann an t-ordú na roghanna seo leis:

--nostaticLink to this definition

Úsáid an rogha --nostatic chun freastal comhaid statacha a dhíchumasú leis an aip: doc: staticfiles go hiomlán </ref/contrib/staticfiles>. Níl an rogha seo ar fáil ach amháin má tá an aip: doc: staticfiles i do shocrú tionscadal: setting: INSTALLED_APPS </ref/contrib/staticfiles>.

Úsáid sampla:

Linux / macOS

Shell
$ django-admin runserver --nostatic

Windows

Windows
...\> django-admin runserver --nostatic
--insecureLink to this definition

Úsáid an rogha --insecure chun comhaid statacha a sheirbheáil a chur i bhfeidhm leis an aip: doc: staticfiles fiú más é an socrú:setting: DEBUG False` </ref/contrib/staticfiles>. Trí úsáid a bhaint as seo admhaíonn tú go bhfuil sé thar a bheith neamhéifeachtúil** agus is dócha go bhfuil sé neamhchinnteach**. Níl sé seo beartaithe ach d'fhorbairt áitiúil, níor cheart é a úsáid riamh i dtáirgeach** agus níl sé ar fáil ach amháin má tá an aip: doc: staticfiles i socrú do thionscad:setting: </ref/contrib/staticfiles> INSTALLED_APPS.

Ní oibríonn --insecure le:class: ~.storage.manifestStaticFilesStorage.

Úsáid sampla:

Linux / macOS

Shell
$ django-admin runserver --insecure

Windows

Windows
...\> django-admin runserver --insecure

StórálaíLink to this heading

Stóráil Comhad StaticLink to this heading

class storage.StaticFilesStorageLink to this definition

Fo-aicme den chúltaca stórála:class: ~django.core.files.storage.filesystemStorage a úsáideann an socrú:setting: STATIC_ROOT mar shuíomh an chórais chomhaid bonn agus an socrú: STATIC_URL faoi seach mar an bunURL.

storage.StaticFilesStorage.post_process(paths, **options)Link to this definition

Má shainmhínítear an modh seo ar stóráil, glaonn an t-ordú bainistíochta: djadmin: collectstatic air tar éis gach rith agus cuirtear ar na stórais agus na gcosáin áitiúla comhaid a aimsítear mar fhoclóir, chomh maith leis na roghanna líne ordaithe. Tugann sé bealaí de thrí luach: original_path, processsed_path, processsed. Is teaghráin iad na luachanna cosáin agus is boolean é “próiseáilte” a léiríonn cibé an raibh an luach iar-phróiseáilte nó nach raibh, nó eisceacht má theip ar iar-phróiseáil.

Úsáideann an: Class: ~django.contrib.staticFiles.Storage.ManifestStaticFilesStorage é seo taobh thiar de na radhairc chun a gcomhghleacaithe hashaithe a chur in ionad na cosáin agus an taisce a nuashonrú go cuí.

Stóráil Comhad ManifestStaticLink to this heading

class storage.ManifestStaticFilesStorageLink to this definition

Fo-aicme den chúltaca stórála:class: ~django.contrib.staticFiles.Storage.staticFilesStorage a stóráil na hainmneacha comhaid a láimhseálann sé trí hash MD5 d'ábhar an chomhaid a chur leis an ainm comhaid. Mar shampla, sábhálfaí an comhad css/styles.css mar css/styles.55e7cbb9ba48.css` freisin.

Is é cuspóir an stórála seo freastal ar na sean-chomhaid i gcás go dtagraíonn roinnt leathanaigh fós do na comhaid sin, m.sh. toisc go bhfuil tú féin nó seachfhreastalaí tríú páirtí iad a chosc. Ina theannta sin, tá sé an-chabhrach más mian leat `ceannteidiúirí in éag sa todhchaí' _ a chur i bhfeidhm ar na comhaid imscartha chun an t-am ualaigh a bhrostú le haghaidh cuairteanna leathanaigh ina dhiaidh sin.

Cuireann an cúltaca stórála in ionad na cosáin a fhaightear sna comhaid shábháilte a mheaitseálann comhaid shábháilte eile le cosán na cóip taisce (ag baint úsáide as an modh:meth: ~django.contrib.staticfiles.storage.staticfilesStorage.post_process). Clúdaíonn na nathanna rialta a úsáidtear chun na cosáin sin a aimsiú (Django.Contrib.StaticFiles.Storage.HashedFilesMixin.Patterns):

Fo-aicme ManifestStaticFilesStorage agus socraigh an tréith support_js_module_import_aggregation le True`, más mian leat na nathanna rialta turgnamhacha a úsáid chun clúdach:

Mar shampla, an comhad css/styles.css' leis an ábhar seo:

Css
@import url("../admin/css/base.css");

... cuireadh in ionad an modh cúltaca stórála ManifeststaticFilesStorage ManifestStaticFilesStorage` a ghlaoch, ~django.core.files.storage.url, ag sábháil comhad ``css/styles.55e7cbb9ba48.css' leis an ábhar seo a leanas:

Css
@import url("../admin/css/base.27e20196a850.css");

Is féidir leat suíomh an chomhaid léirithe a athrú trí fho-aicme saincheaptha ManifestStaticFilesStorage a shocraíonn an argóint manifest_storage a úsáid. Mar shampla:

Code
from django.conf import settings
from django.contrib.staticfiles.storage import (
    ManifestStaticFilesStorage,
    StaticFilesStorage,
)


class MyManifestStaticFilesStorage(ManifestStaticFilesStorage):
    def __init__(self, *args, **kwargs):
        manifest_storage = StaticFilesStorage(location=settings.BASE_DIR)
        super().__init__(*args, manifest_storage=manifest_storage, **kwargs)
storage.ManifestStaticFilesStorage.manifest_hashLink to this definition

Soláthraíonn an tréith seo hash amháin a athraíonn aon uair a athraíonn comhad sa léiriú. D'fhéadfadh sé seo a bheith úsáideach chun cur in iúl do SPAanna go bhfuil athrú tagtha ar na sócmhainní ar an bhfreastalaí (mar gheall ar imscaradh nua).

storage.ManifestStaticFilesStorage.max_post_process_passesLink to this definition

Ós rud é go bhféadfadh comhaid statacha tagairt a dhéanamh do chomhaid statacha eile a gcaithfear a gcosáin a athsholáthar, d'fhéadfadh go mbeadh gá le pasanna iolracha de chosáin athsholáthair go dtí Chun lúb gan teorainn a chosc mar gheall ar hashes nach bhfuil ag teacht le chéile (mar shampla, má thagann 'foo.css' tagairtí 'bar.css' a thagann tagairt do 'foo.css') tá líon uasta pasanna ann sula dtréigtear an iar-phróiseáil. I gcásanna a bhfuil líon mór tagairtí acu, d'fhéadfadh go mbeadh líon níos airde pasanna ag teastáil. Méadaigh an líon uasta pasanna trí ManifestStaticFilesStorage` a fho-aicmiú agus an tréith max_post_process_passes a shocrú. Tá sé réamhshocraithe go 5.

Chun an ManifeststaticFilesStorage` a chumasú caithfidh tú a chinntiú go gcomhlíontar na riachtanais seo a leanas:

  • an cúltaca stórála staticfiles in:setting: socraítear socrú STORAGES go django.contrib.staticfiles.storage.manifestStaticFilesStorage'

  • socraítear an socrú: DEBUG go False

  • bhailigh tú do chuid comhad statacha go léir tríd an ordú bainistíochta: djadmin: collectstatic a úsáid

Ós rud é gur féidir le cruthú an hash MD5 a bheith ina ualach feidhmíochta ar do shuíomh Gréasáin le linn rith ama, stóráilfidh staticfiles` an mapáil go huathoibríoch le hainmneacha hashaithe do gach comhad próiseáilte i gcomhad ar a dtugtar staticfiles.json. Tarlaíonn sé seo uair amháin nuair a ritheann tú an t-ordú bainistíochta: djadmin: collectstatic.

storage.ManifestStaticFilesStorage.manifest_strictLink to this definition

Mura bhfaightear comhad sa léiriú staticfiles.json ag an am rith, ardaítear ValueError. Is féidir an t-iompar seo a dhíchumasú trí ManifestStaticFilesStorage` a fho-aicmiú agus an tréith manifest_strict a shocrú le False - fanfaidh cosáin nach bhfuil ann gan athrú.

Mar gheall ar an riachtanas a bhaineann le rith: djadmin: collectstatic, de ghnáth níor cheart an stóráil seo a úsáid agus tástálacha á reáchtáil mar nach reáchtáiltear collectstatic mar chuid den ghnáthshocrú tástála. Le linn na tástála, déan cinnte go bhfuil cúltaca stórála staticfiles sa socrú: STORAGES socraithe ar rud éigin eile cosúil le django.contrib.staticfiles.storage.staticfilesStorage (an réamhshocraithe).

storage.ManifestStaticFilesStorage.file_hash(name, content=None)Link to this definition

An modh a úsáidtear agus ainm hashed comhad á chruthú. Ní mór hash a thabhairt ar ais le haghaidh ainm agus ábhar an chomhaid tugtha. De réir réamhshocraithe ríomhann sé hash MD5 ó phíosaí an ábhair mar a luaitear thuas. Ná bíodh leisce ort an modh seo a shárú chun d'algartam hashing féin a úsáid.

ManifestFilesMixinLink to this heading

class storage.ManifestFilesMixinLink to this definition

Úsáid an meascán seo le stóráil saincheaptha chun hash MD5 d'ábhar an chomhaid a chur leis an ainm comhaid mar: class: ~Storage.ManifestStaticFilesStorage a dhéanann.

Modúl aimsitheoiríLink to this heading

Tá tréith searched_locations ag aimsitheoirí staticfiles ar liosta de na cosáin eolaire inar chuardaigh na faighteoirí. Úsáid sampla:

Code
from django.contrib.staticfiles import finders

result = finders.find("css/base.css")
searched_locations = finders.searched_locations

Cúntóirí EileLink to this heading

Tá cúpla cúntóir eile lasmuigh den aip: mod: `staticfiles <django.contrib.staticfiles>`chun oibriú le comhaid statacha:

  • An próiseálaí comhthéacs: Func: django.template.context_processors.static a chuireann: socrú: STATIC_URL le gach comhthéacs teimpléad a rinneadh le:class: ~django.template.requestContext comhthéacsanna.

  • Tag:ttag an teimpléad tógáilte: static a thógann cosán agus a cheanglaíonn leis an réamhshocrú statach: socrú: STATIC_URL. Má tá django.contrib.staticfiles suiteáilte, úsáideann an chlib an modh url () ``den chúlcheann stórála ``staticfiles ó:setting: STORAGES ina ionad.

  • Tag:ttag: get_static_prefix an teimpléad bunaithe a chuireann athróg teimpléad leis an réamhshocrú statach: setting: STATIC_URL le húsáid mar athróg nó go díreach.

  • An teimpléad den chineál céanna tag:ttag: get_media_prefix a oibríonn cosúil:ttag: get_static_prefix ach úsáideann sé: socrú: MEDIA_URL.

  • Sa eochair staticfiles` in:data: django.core.files.storage.storages tá sampla réidh le húsáid de chúlcheann stórála staticfiles.

Amharc forbartha comhad statachLink to this heading

Tá na huirlisí comhaid statacha deartha den chuid is mó chun cabhrú le comhaid statacha a imscaradh go rathúil i dtáirgeadh. De ghnáth ciallaíonn sé seo freastalaí comhad statach ar leithligh, tiomnaithe, atá go leor lasbhairde le praiseach leis agus tú ag forbairt go háitiúil. Dá bhrí sin, seoltar an aip staticfiles` le radharc cúntóra tapa agus salach** is féidir leat a úsáid chun comhaid a sheirbheáil go háitiúil atá i bhforbairt.

views.serve(request, path)Link to this definition

Freastalaíonn an fheidhm radhairc seo ar chomhaid statacha atá i bh

Cumasaítear an radharc seo go huathoibríoch ag: djadmin: runserver (le a: setting: DEBUG socrú go True). Chun an radharc a úsáid le freastalaí forbartha áitiúil difriúil, cuir an snippet seo a leanas le deireadh do phríomhchumraíocht URL:

Code
from django.conf import settings
from django.contrib.staticfiles import views
from django.urls import re_path

if settings.DEBUG:
    urlpatterns += [
        re_path(r"^static/(?P<path>.*)$", views.serve),
    ]

Tabhair faoi deara, ba chóir go mbeadh tús an phatrúin (r'^static/'`) do shuíomh: socrú: STATIC_URL.

Ós rud é go bhfuil sé seo beagán éasca, tá feidhm chúntóra ann freisin a dhéanfaidh é seo duit:

urls.staticfiles_urlpatterns()Link to this definition

Cuirfidh sé seo an patrún ceart URL ar ais chun comhaid statacha a sheirbheáil ar do liosta patrún atá sainmhínithe cheana féin. Úsáid é mar seo:

Code
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf here ...

urlpatterns += staticfiles_urlpatterns()

Déanfaidh sé seo iniúchadh ar do shuíomh: STATIC_URL agus sreangóidh sé an dearcadh chun comhaid statacha a sheirbheáil dá réir. Ná déan dearmad an socrú: STATICFILES_DIRS a shocrú go cuí chun a chur ar django.contrib.staticfiles a fhios cá háit le comhaid a lorg i dteannta le comhaid in eolairí aipeanna.

Cás tástála speisialaithe chun tacú le 'tástáil beo'Link to this heading

class testing.StaticLiveServerTestCaseLink to this definition

Leathnaíonn fo-rang tástála aonaidCase seo: aicme: django.test.LiveserVertestCase.

Díreach cosúil lena thuismitheoir, is féidir leat é a úsáid chun tástálacha a scríobh lena mbaineann an cód atá faoi thástáil a reáchtáil agus é a ithe le huirlisí tástála trí HTTP (m.sh. Seiléiniam, PhantomJS, srl.), Mar gheall air sin tá sé ag teastáil go bhfoilsítear na sócmhainní statacha freisin.

Ach mar gheall ar an bhfíric go mbaineann sé úsáid as an dearcadh: :func: django.contrib.staticfiles.views.serve a thuairiscítear thuas, is féidir leis na sócmhainní a sholáthraíonn na faighdeoirí staticfiles ``a fhorghníomhú go trédhearcach ag am feidhmiúcháin tástála. Ciallaíonn sé seo nach gá duit rith: djadmin: `collectstatic roimh socrú do thástálacha nó mar chuid de.