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:
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ó
- --link, -lLink to this definition
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
staticfilescumraithe ó: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
$ python manage.py collectstatic --help
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:
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
$ 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
...\> 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
$ python manage.py findstatic css/base.css --first
Found 'css/base.css' here:
/home/special.polls.com/core/static/css/base.css
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
$ 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
...\> 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
$ 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
...\> 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
$ django-admin runserver --nostatic
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
$ django-admin runserver --insecure
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):
An riail @import `_ agus an ráiteas `url () `_ ar `Bileoga Stíl Cascading.
Tuairimí léarscáil foinse i gcomhaid CSS agus JavaScript.
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:
Iompórtáil na modúil i JavaScript.
An comhiomlánú modúl i JavaScript.
Mar shampla, an comhad css/styles.css' leis an ábhar seo:
@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:
@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:
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
staticfilesin:setting: socraítear socrú STORAGES godjango.contrib.staticfiles.storage.manifestStaticFilesStorage'socraítear an socrú: DEBUG go
Falsebhailigh 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:
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.staticfilessuiteáilte, úsáideann an chlib an modhurl () ``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:
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:
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.