اذهب إلى المحتوى

السؤال

نشر

لدي بعض المتغيرات الإضافية في ملف settings.py وأود أن أتمكن من الوصول إليها من خلال template، لكن لا يمكنني معرفة كيفية القيام بذلك. لقد حاولت إستخدام طريقة الأقواس كالتالي:

{{ VAR_NAME }}

لكنلا يبدو أن هذه الطريقة تعمل على الإطلاق. كيف يمكنني الوصول إلى محتوى الملف settings.py؟

Recommended Posts

  • 1
نشر

إذا كانت قيمة ترغب في الحصول عليها لكل طلب & نموذج ، فإن استخدام معالج السياق "context processor" يكون أفضل حل كالتالي.. ننشئ ملف Context_processors.py في مجلد التطبيق. ولنفترض أنني أريد الحصول على قيمة ADMIN_PREFIX_VALUE في كل سياق:

from django.conf import settings
def _m(request):
    # إرجاع القيمة التي تريدها كقاموس يمكنك إضافة قيم متعددة هناك
    return {'ADMIN_MEDIA_URL': settings.ADMIN_MEDIA_PREFIX}
#settings.py أضف معالج السياق إلى ملف
TEMPLATES = [{
    # ..
    'OPTIONS': {
        'context_processors': [
            # ..
            "your_app.context_processors.admin_media",
        ],
    }
}]
#  view في ال RequestContext  استخدم
#بهذا تلقائياً render shortcut الخاص بك لإضافة معالجات السياق التي تريدها ضمن القالب الذي تريده. يقوم 
from django.shortcuts import render
def admin_media(request):
    return render(request, "index.html")
# وأخيراً ضمن القالب الخاص بك
...
<a href="{{ ADMIN_MEDIA_URL }}">path to admin media</a>
...

كما أن أبسط طريقة تتجلى باستخدام custom template tag:

from django import template
from django.conf import settings
register = template.Library()
# settings value
@register.simple_tag
def settings_value(name):
    return getattr(settings, name, "")
# ونستخدم
{% settings_value "LANGUAGE_CODE" %}

 

  • 1
نشر

يمكنك أن تستعمل الحزمة django-settings-export، حيث تمكنك من إستخدام متغيرات معينه من ملف settings.py داخل أي قالب template بشكل سهل للغاية.

اولًا عليك تثبيت الحزمة من خلال الأمر التالي:

pip install django-settings-export

بعد ذلك يجب أن تقوم بإعداد ملف settings.py ليشمل الكود التالي:

# هنا تخبر Django بأن يقوم بتشغيل هذه الحزمة في القوالب
TEMPLATES = [
    {
        'OPTIONS': {
            'context_processors': [
                'django_settings_export.settings_export',
            ],
        },
    },
]

# هذا مثال لمتغير وسوف نستخدمه في القوالب
MY_TEST_DATA = 'any content goes here';

# في هذا الجزء تقوم بكتابة المتغيرات التي تريد إستخدامها في القوالب
# لاحظ ان المتغيرات تكتب بشكل نص
SETTINGS_EXPORT = [
    'MY_TEST_DATA',
]

بعد ذلك يمكنك ان تستخدم المتغير MY_TEST_DATA، كالتالي:

<script>var customVar = '{{ settings.MY_TEST_DATA }}';</script>

ويمكنك تغير كلمة settings لأي شيء آخر (في حالة حدوث تعارض مع حزمة أخرى)، من خلال عمل متغير SETTINGS_EXPORT_VARIABLE_NAME في ملف settings.py، كالتالي:

# نقوم بإعطاء المتغير أي قيمة نصية
# يجب ألا تحتوي على مسافات، فقط حروف لاتينية وعلامة _
SETTINGS_EXPORT_VARIABLE_NAME = 'my_config'

# في القالب
{{ my_config.MY_TEST_DATA }}

في حالة كنت تستخدم Django بإصدار اقدم من 1.8 فيجب أن تستخدم الكود التالي لإعداد الحزمة:

TEMPLATE_CONTEXT_PROCESSORS = [
    'django_settings_export.settings_export',
]

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...