Conas rang stórála saincheaptha a scríobhLink to this heading
Más gá duit stóráil comhaid saincheaptha a sholáthar - sampla coitianta ná comhaid a stóráil ar chóras iargúlta éigin - is féidir leat é sin a dhéanamh trí rang stórála saincheaptha a shainiú. Beidh ort na céimeanna seo a leanúint:
Caithfidh do chóras stórála saincheaptha a bheith ina fho-aicme de
Django.Core.Files.Storage.Storage:from django.core.files.storage import Storage class MyStorage(Storage): ...Caithfidh Django a bheith in ann do chóras stórála a dhéanamh gan aon argóintí. Ciallaíonn sé seo gur chóir aon socruithe a thógáil ó
django.conf.settings:from django.conf import settings from django.core.files.storage import Storage class MyStorage(Storage): def __init__(self, option=None): if not option: option = settings.CUSTOM_STORAGE_OPTIONS ...Your storage class must implement the
_open()and_save()methods, along with any other methods appropriate to your storage class. See below for more on these methods.Ina theannta sin, má sholáthraíonn do rang stóráil comhad áitiúil, caithfidh sé an modh ``path () `a shárú.
Caithfidh do rang stórála a bheith: ref: dífhoirmithe <custom-deconstruct-method>`ionas gur féidir é a shraitheadh nuair a úsáidtear é ar réimse in imirce. Chomh fada agus a bhíonn argóintí ag do réimse atá féin:ref: `serializable <migration-serializing>, is féidir leat an maisitheoir aicme
django.utils.deconstruct.deconstructiblea úsáid chuige seo (sin an rud a úsáideann Django ar FileSystemStorage).
De réir réamhshocraithe, ardaíonn na modhanna seo a leanas NotImplementederror` agus is gnách go gcaithfear iad a shárú:
Tabhair faoi deara, áfach, nach bhfuil na modhanna seo uile ag teastáil agus gur féidir iad a fhágáil d'aon ghnó. Mar a tharlaíonn sé, is féidir gach modh a fhágáil gan cur i bhfeidhm agus Stóráil oibre a bheith agat fós.
Mar shampla, má bhíonn sé daor ábhar cúltaca stórála áirithe a liostáil, b'fhéidir go gcinneann tú gan `Storage.listDir () `a chur i bhfeidhm.
Sampla eile ba ea cúltaca nach láimhseálann ach scríbhneoireacht chuig comhaid. Sa chás seo, ní bheadh ort aon cheann de na modhanna thuas a chur i bhfeidhm.
I ndeireadh na dála, is fútsa atá cé acu de na modhanna seo a chuirtear i bhfeidhm. Beidh comhéadan páirteach (briste b'fhéidir) mar thoradh ar roinnt modhanna gan cur i bhfeidhm.
De ghnáth beidh tú ag iarraidh crúcaí a úsáid atá deartha go sonrach le haghaidh rudaí stórála saincheaptha Seo iad seo:
- _open(name, mode='rb')Link to this definition
Riachtanáil.
Tugtar air ag ``Storage.open () ``, is é seo an meicníocht iarbhír a úsáideann an rang stórála chun an comhad a oscailt. Caithfidh sé seo réad ``Comhad ``a thabhairt ar ais, cé i bhformhór na gcásanna, beidh tú ag iarraidh roinnt fo-aicme a thabhairt ar ais anseo a chuireann loighic go sonrach don chóras stórála cúltaca i bhfeidhm. Ba chóir an eisceacht: EXC: FileNotFoundError a ardú nuair nach bhfuil comhad ann.
- _save(name, content)Link to this definition
Glaoigh Storage.save () ``. Beidh an ``ainm ``imithe cheana féin trí ``get_valid_name () agus get_available_name () ``, agus is réad ``Comhad féin a bheidh an content.
Ba chóir ainm iarbhír an chomhaid a shábháiltear a thabhairt ar ais (de ghnáth an ``ainm ``a chuirtear isteach, ach más gá don stóráil ainm an chomhaid a athrú, cuir an t-ainm nua ar ais ina ionad).
- get_valid_name(name)Link to this definition
Filleann sé ainm comhaid atá oiriúnach le húsáid leis an gcóras stórála bunúsach. Is é an argóint name a cuireadh ar aghaidh chuig an modh seo ná an bunainm comhaid a seoladh chuig an bhfreastalaí nó, má tá upload_to inghlaoite, cuirtear ainm an chomhaid ar ais ar an modh sin tar éis aon fhaisnéis cosán a bhaint. Sáraigh é seo chun an chaoi a dtiontaítear carachtair neamhchaighdeánacha go comhadainmneacha sábháilte a shaincheapadh.
Ní choimeádann an cód a chuirtear ar `Stóráil ``ach carachtair, tréimhsí agus béim alfa-uimhriúla ón ainm comhaid bunaidh, ag baint gach rud eile.
- get_alternative_name(file_root, file_ext)Link to this definition
Tugann ainm comhaid malartach ar ais bunaithe ar na paraiméadair file_root` agus file_ext. De réir réamhshocraithe, cuirtear béim móide sreang alfauméireach randamach 7 charachtar leis an ainm comhaid roimh an síneadh.
- get_available_name(name, max_length=None)Link to this definition
Filleann ainm comhaid atá ar fáil sa mheicníocht stórála, agus b'fhéidir ag cur an ainm comhaid a chuirtear ar fáil san áireamh. Beidh an argóint ainm ``a chuirtear chuig an modh seo glan cheana féin chuig ainm comhaid atá bailí don chóras stórála, de réir an mhodha ``get_valid_name () a thuairiscítear thuas.
Ní rachaidh fad an ainm comhaid thar ``max_length ``, má chuirtear ar fáil. <django.core.exceptions.SuspiciousOperation>Mura féidir ainm comhaid uathúil saor in aisce a fháil, ardaítear eisceacht a: exc: `SuspiciousFileOperation `.
Má tá comhad le ainm ``ann cheana féin, tugtar ``get_alternative_name () chun ainm malartach a fháil.
Úsáid d'inneall stórála saincheapthaLink to this heading
Is é an chéad chéim chun do stóráil saincheaptha a úsáid le Django ná insint do Django faoin gcúltaca stórála comhaid a bheidh á úsáid agat. Déantar é seo ag baint úsáide as an socrú:setting: STORAGES. Déanann an socrú seo mapáil ainmneacha stórála, ar bealach iad chun tagairt a dhéanamh do stóráil ar leith ar fud Django, chuig foclóir socruithe don chúlcheann stórála sonrach sin. Déantar cur síos iomlán ar na socruithe sna foclóirí istigh sa doiciméadach:setting: STORAGES.
Ansin déantar rochtain ar stórálaí ag ainm ón bhfoclóir:data: django.core.files.storage.storages:
from django.core.files.storage import storages
example_storage = storages["example"]