Staviam web s Djangom. V šablóne hlavičky mám hlavný názov pre web, ktorý je momentálne v ňom napevno.
Ako to môžem upraviť v adminovi pomocousprávca webových stránok (alebo akýkoľvek používateľ so správnymi povereniami)? V ideálnom prípade by som chcel mať možnosť, aby bolo možné upraviť viac takýchto atribútov celého webu (alebo celej aplikácie) v správcovi (napríklad web - alebo popis aplikácie).
Mám na mysli niečo ako WordPress “ bloginfo () . Praktickým príkladom toho je washingtonpost.com ktorí pred pár týždňami zmenili moto v hlavičke na „Demokracia zomiera v tme“.
Po editácii titulu (alebo iného atribútu) v administrátorovi samozrejme musím byť schopný získať ho z mojej šablóny.
odpovede:
1 pre odpoveď č. 1Môžete vytvoriť jednoduchý model na ukladanie dynamických parametrov webových stránok, napríklad tento:
class WebsiteParam(models.Model):
key = models.CharField(max_length=50)
val = models.CharField(max_length=1024)
Potom definujte vlastný kontextový procesor šablón settings_processor.py
def settings_processor(request):
vals = {x.key: v.val for x in WebsiteParam.objects.all()}
return {"website_settings": vals}
Pridajte tento procesor do súboru django settings.py, napríklad:
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
"myapp.settings_processor.settings_processor",
)
A svoje nastavenia budete môcť použiť vo všetkých svojich šablónach ako
<html><head><title>{{website_settings.title}}</title>...
ak máte nastavenia s title
kľúč pridaný do databázy
Ak je to potrebné, mali by ste samozrejme pridať do pamäte cache kontextový procesor a ďalšie podmienky