/ / Django: व्यवस्थापक में वेबसाइट शीर्षक संपादन योग्य बनाने के लिए उचित तरीका

Django: व्यवस्थापक में वेबसाइट शीर्षक संपादन योग्य बनाने के लिए सही तरीका - django, django-templates, django-admin

मैं Django के साथ एक वेबसाइट का निर्माण कर रहा हूं। मेरे हेडर टेम्पलेट में वेबसाइट के लिए एक मुख्य शीर्षक है, वर्तमान में इसमें हार्ड-कोडित है।

मैं इसे व्यवस्थापक द्वारा संपादन योग्य कैसे बना सकता हूंवेबसाइट व्यवस्थापक (या सही क्रेडेंशियल्स वाला कोई भी उपयोगकर्ता)? आदर्श रूप से, मैं ऐसे और अधिक साइट-व्यापी (या ऐप-वाइड) एट्रिब्यूट को एडिट करने योग्य बनाने में सक्षम होना चाहता हूं (उदाहरण के लिए साइट - या ऐप-विवरण)

मेरे मन में वर्डप्रेस जैसा कुछ है ” bloginfo () । इसका एक व्यावहारिक उदाहरण है washingtonpost.com जिन्होंने कुछ हफ़्ते पहले अपने मोटो को अपने हेडर में बदलकर "डेमोक्रेसी इन डार्क" हो गया था।

बेशक एक बार शीर्षक (या किसी अन्य विशेषता) को व्यवस्थापक में संपादित किया गया हो, मुझे इसे अपने टेम्पलेट के भीतर से प्राप्त करने में सक्षम होना चाहिए।

उत्तर:

उत्तर № 1 के लिए 1

आप उदाहरण के लिए इस तरह गतिशील वेबसाइट मापदंडों को संग्रहीत करने के लिए एक सरल मॉडल बना सकते हैं:

class WebsiteParam(models.Model):
key = models.CharField(max_length=50)
val = models.CharField(max_length=1024)

फिर कस्टम टेम्पलेट संदर्भ प्रोसेसर सेटिंग_प्रोसेसर को परिभाषित करें

def settings_processor(request):
vals = {x.key: v.val for x in WebsiteParam.objects.all()}
return {"website_settings": vals}

इस प्रोसेसर को अपनी django settings.py में कुछ इस तरह जोड़ें:

from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
"myapp.settings_processor.settings_processor",
)

और आप अपनी सेटिंग को अपने सभी टेम्प्लेट की तरह उपयोग कर पाएंगे

<html><head><title>{{website_settings.title}}</title>...

अगर आपके साथ सेटिंग है title डेटाबेस में कुंजी जोड़ी गई

यदि आवश्यक हो तो आपको अनुरोध संदर्भ प्रोसेसर और अन्य स्थितियों में कैशिंग को जोड़ना चाहिए