Ag scríobh do chéad aip Django, cuid 7Link to this heading
Tosaíonn an rang teagaisc seo nuair a d'fhág Tutorial 6 as. Táimid ag leanúint leis an bhfeidhmchlár vótaíochta gréasáin agus díreoimid ar shuíomh riaracháin Django a ghintear go huathoibríoch a shaincheapadh a rinneamar iniúchadh ar dtús i Teagasc 2.
Saincheap an fhoirm riaracháinLink to this heading
Trí mhúnla Ceist a chlárú le admin.site.register(Question), bhí Django in ann léiriú réamhshocraithe foirme a chruthú. Go minic, beidh tú ag iarraidh conas a bhreathnaíonn agus a oibríonn an fhoirm riaracháin a shaincheapadh. Déanfaidh tú é seo trí na roghanna atá uait a insint do Django nuair a chláraíonn tú an réad.
Feicfimid conas a oibríonn sé seo trí na réimsí ar an bhfoirm eagarthóireachta a athordú. Ionadaigh an líne admin.site.register(Ceist) le:
polls/admin.pyfrom django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fields = ["pub_date", "question_text"]
admin.site.register(Question, QuestionAdmin)
Leanfaidh tú an patrún seo -- cruthaigh rang admin samhail, ansin cuir ar aghaidh é mar an dara argóint chuig admin.site.register() -- am ar bith is gá duit na roghanna riaracháin do shamhail a athrú.
Fágann an t-athrú áirithe seo thuas go dtagann an "Publication date" roimh an réimse "Question":
Níl sé seo go hiontach le dhá réimse, ach i gcás foirmeacha riaracháin ina bhfuil mórán réimsí, is sonraí inúsáidteachta tábhachtach é ordú iomasach a roghnú.
Agus foirmeacha ag baint le mórán réimsí, b'fhéidir gur mhaith leat an fhoirm a roinnt ina réimsí páirce:
polls/admin.pyfrom django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["question_text"]}),
("Date information", {"fields": ["pub_date"]}),
]
admin.site.register(Question, QuestionAdmin)
Is é an chéad eilimint de gach tuple in fieldsets teideal an réimse réimse. Seo an chuma atá ar ár bhfoirm anois:
Saincheap an liosta athraithe adminLink to this heading
Anois go bhfuil cuma mhaith ar leathanach riaracháin na gCeisteanna, déanaimis roinnt tweaks ar an leathanach "liosta athraithe" - an ceann a thaispeánann na ceisteanna go léir sa chóras.
Seo an chuma atá air ag an bpointe seo:
De réir réamhshocraithe, taispeánann Django an `` str ()`` de gach réad. Ach uaireanta bheadh sé níos cabhrach dá bhféadfaimis réimsí aonair a thaispeáint. Chun é sin a dhéanamh, bain úsáid as an rogha admin list_display, arb é liosta ainmneacha páirce é le taispeáint, mar cholúin, ar an leathanach liosta athruithe don réad:
polls/admin.pyclass QuestionAdmin(admin.ModelAdmin):
# ...
list_display = ["question_text", "pub_date"]
Ar mhaithe le beart maith, cuirimis san áireamh freisin an modh foilsíodh_le déanaí() ó Teagasc 2:
polls/admin.pyclass QuestionAdmin(admin.ModelAdmin):
# ...
list_display = ["question_text", "pub_date", "was_published_recently"]
Anois tá cuma mar seo ar an leathanach liosta athraithe ceisteanna:
Is féidir leat cliceáil ar na ceanntásca colúin chun iad a shórtáil de réir na luachanna sin -- ach amháin i gcás an chinnteidil foilsíodh_le déanaí_, mar ní thacaítear le sórtáil de réir aschur modha treallach. Tabhair faoi deara freisin gurb é ceanntásc an cholúin le haghaidh foilsíodh_le déanaí, de réir réamhshocraithe, ainm an mhodha (agus spásanna curtha in ionad na bhfostóirí), agus go bhfuil léiriú teaghrán an aschuir i ngach líne.
Is féidir leat é sin a fheabhsú trí úsáid a bhaint as an maisitheoir display() ar an modh sin (ag síneadh leis an gcomhad :comhad:`polls/models.py` a cruthaíodh i Teagasc 2), mar a leanas:
polls/models.pyfrom django.contrib import admin
class Question(models.Model):
# ...
@admin.display(
boolean=True,
ordering="pub_date",
description="Published recently?",
)
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date <= now
Le haghaidh tuilleadh eolais ar na hairíonna is féidir a chumrú tríd an maisitheoir, féach list_display.
Cuir do chomhad ::polls/admin.py in eagar arís agus cuir feabhas ar an leathanach liosta athruithe Ceist: scagairí ag baint úsáide as an list_filter. Cuir an líne seo a leanas le QuestionAdmin:
list_filter = ["pub_date"]
Cuireann sé sin barra taoibh "Filter" leis a ligeann do dhaoine an liosta athruithe a scagadh de réir an réimse `` pub_date``:
Braitheann an cineál scagaire a thaispeánfar ar an gcineál réimse a bhfuil tú ag scagadh air. Toisc gur DateTimeField é `` pub_date``, tá a fhios ag Django roghanna cuí scagaire a thabhairt: "Dáta ar bith", "Inniu", "7 lá anuas", "An mhí seo", "I mbliana".
Tá sé seo ag múnlú suas go maith. Cuirimis roinnt cumas cuardaigh leis:
search_fields = ["question_text"]
Cuireann sé sin bosca cuardaigh ag barr an liosta athruithe. Nuair a chuireann duine téarmaí cuardaigh isteach, déanfaidh Django an réimse question_text a chuardach. Is féidir leat an oiread réimsí agus is mian leat a úsáid -- ach toisc go n-úsáideann sé fiosrú LIKE` taobh thiar de na pictiúir, má chuirtear teorainn le líon na réimsí cuardaigh go líon réasúnta, beidh sé níos éasca do do bhunachar sonraí an cuardach a dhéanamh.
Is dea-am é anois freisin le tabhairt faoi deara go dtugann liostaí athraithe leathanach saor in aisce duit. Is é an réamhshocrú ná 100 mír a thaispeáint in aghaidh an leathanaigh. Athraigh leathanach an liosta, boscaí cuardaigh, scagairí, ordlathais dáta, agus column-header-ordering ar fad oibriú le chéile mar a cheapann tú ba chóir dóibh.
Saincheap cuma agus mothú an riaracháinLink to this heading
Is léir gur rud ridiciúil é “riarachán Django” ag barr gach leathanach riaracháin. Níl ann ach téacs áitsealbhóra.
Is féidir leat é a athrú, áfach, ag baint úsáide as córas teimpléad Django. Tá an riarthóir Django faoi thiomáint ag Django féin, agus úsáideann a chomhéadain córas teimpléid Django féin.
Saincheapadh do * tionscadail * teimpléidLink to this heading
Cruthaigh eolaire templates i do eolaire djangotutorial. Is féidir le teimpléid maireachtáil áit ar bith ar do chóras comhad ar féidir le Django rochtain a fháil air. (Ritheann Django mar cibé úsáideoir a ritheann do fhreastalaí.) Mar sin féin, is dea-ghnás é do theimpléid a choinneáil laistigh den tionscadal.
Oscail do chomhad socruithe (:comhad:`mysite/settings.py`, cuimhnigh) agus cuir rogha DIRS leis sa socrú TEMPLATES:
mysite/settings.pyTEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [BASE_DIR / "templates"],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
DIRS is ea liosta eolairí córais comhaid le seiceáil agus teimpléid Django á lódáil; is cosán cuardaigh é.
Anois cruthaigh eolaire darb ainm `` admin`` taobh istigh de `` teimpléid``, agus cóipeáil an teimpléad `` admin/base_site.html`` ón eolaire réamhshocraithe teimpléid admin Django i gcód foinse Django féin (: foinse:` django/contrib/admin/templates`) isteach san eolaire sin.
Ansin, cuir an comhad in eagar agus cuir ainm do shuímh féin in áit {{ site_header|réamhshocraithe:_('Riarachán Django') }} (lena n-áirítear na braces curly) mar is cuí leat. Ba chóir go mbeadh roinn de chód mar:
{% block branding %}
<div id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></div>
{% if user.is_anonymous %}
{% include "admin/color_theme_toggle.html" %}
{% endif %}
{% endblock %}
Bainimid úsáid as an gcur chuige seo chun tú a mhúineadh conas teimpléid a shárú. I dtionscadal iarbhír, is dócha go n-úsáidfeá an tréith django.contrib.admin.AdminSite.site_header chun an saincheapadh áirithe seo a dhéanamh níos éasca.
Tá go leor téacs sa chomhad teimpléad seo ar nós {% brandáil bloc %} agus {{ title }}. Is cuid de theanga teimpléid Django iad na clibeanna {% agus {{. Nuair a dhéanann Django admin/base_site.html, déanfar an teanga teimpléid seo a mheas chun an leathanach HTML deiridh a tháirgeadh, díreach mar a chonaic muid i Teagasc 3.
Tabhair faoi deara gur féidir aon cheann de na teimpléid admin réamhshocraithe Django a shárú. Chun teimpléad a shárú, déan an rud céanna a rinne tú le base_site.html -- cóipeáil é ón eolaire réamhshocraithe isteach i do eolaire saincheaptha, agus déan athruithe.
Saincheapadh d'iarratais * teimpléidLink to this heading
Fiafróidh léitheoirí géara: Ach má bhí: socrú:DIRS <TEMPLATES-DIRS> folamh de réir réamhshocraithe, conas a d'aimsigh Django na teimpléid réamhshocraithe admin? Is é an freagra ná, ós rud é go bhfuil : socrú:APP_DIRS <TEMPLATES-APP_DIRS> socraithe go True, lorgaíonn Django go huathoibríoch fochomhadlann templates/ laistigh de gach pacáiste feidhmchláir, lena úsáid mar chúltaca (don ' ná déan dearmad gur feidhmchlár é django.contrib.admin).
Níl ár bhfeidhmchlár vótaíochta an-chasta agus ní bhíonn teimpléid shaincheaptha riaracháin ag teastáil uaidh. Ach dá bhfásfadh sé níos sofaisticiúla agus go raibh gá le mionathrú a dhéanamh ar theimpléid chaighdeánacha riaracháin Django le haghaidh cuid dá fheidhmiúlacht, bheadh sé níos ciallmhaire teimpléid an fheidhmchláir a mhodhnú, seachas iad siúd sa tionscadal. Ar an mbealach sin, d'fhéadfá an t-iarratas vótaíochta a áireamh in aon tionscadal nua agus a bheith cinnte go bhfaighidh sé na teimpléid saincheaptha a bhí de dhíth air.
Féach an doiciméadú luchtaithe teimpléad le haghaidh tuilleadh eolais faoin gcaoi a n-aimsíonn Django a theimpléid.
Saincheap an leathanach innéacs adminLink to this heading
Ar nóta comhchosúil, b'fhéidir gur mhaith leat cuma agus mothú an leathanaigh innéacs riaracháin Django a shaincheapadh.
De réir réamhshocraithe, taispeánann sé na haipeanna go léir i: socrú:INSTALLED_APPS atá cláraithe leis an bhfeidhmchlár riaracháin, in ord aibítre. B'fhéidir gur mhaith leat athruithe suntasacha a dhéanamh ar an leagan amach. Tar éis an tsaoil, is dócha gurb é an t-innéacs an leathanach is tábhachtaí den riarthóir, agus ba cheart go mbeadh sé éasca le húsáid.
Is é admin/index.html an teimpléad atá le oiriúnú. (Déan mar an gcéanna le `` admin/base_site.html`` sa rannán roimhe seo -- cóipeáil é ón eolaire réamhshocraithe chuig do eolaire teimpléid saincheaptha). Cuir an comhad in eagar, agus feicfidh tú go n-úsáideann sé athróg teimpléid ar a dtugtar `` app_list``. Tá gach aip Django suiteáilte san athróg sin. In ionad é sin a úsáid, is féidir leat naisc a chódú go crua chuig leathanaigh riaracháin a bhaineann go sonrach leis an oibiacht ar bith cibé bealach is fearr leat.
Nuair atá tú ar do chompord leis an riarthóir, léigh cuid 8 den rang teagaisc seo chun foghlaim conas pacáistí tríú páirtí a úsáid.