使用模板设置文件中的变量

时间:2017-01-23 17:53:07

标签: django django-templates

大家好!我想访问我在我的setup.py文件中声明的常量值,以便在我的模板中使用,但不是在应用程序内的模板中,我只想在我的主模板中使用我在设置文件中声明的模板。

CMS_TEMPLATES = (
    ## Customize this
    ('page.html', 'Page'),
    ('feature.html', 'Page with Feature'),
    ('homeTemplate.html', 'Home Template') // I want to use here
)

我在StackOverflow中找到了关于同一问题的this示例,但所有情况都使用了不在顶层的应用内的变量。

在此模板中使用此值的最佳方法是什么!!

1 个答案:

答案 0 :(得分:1)

我首先要问 - 为什么要这样做?这似乎是一种奇怪的方式... 调整你正在使用的模板目录,我猜?

I wonder if you may have an XY problem.如果你发布了你想要实现的内容,那可能比针对这个特定问题的特定解决方案更好。

但从广义上讲,您只能在使用Django或至少其环境的项目或脚本中提供django变量(包括来自settings.py)。执行from django.conf import settings会在所有应用中导入项目中最高级别的可用设置。项目以粗略的方式布局。

myproject - 
    - myapp1 
    - myapp2 
    - myproject 
        - settings.py
        - wsgi.py 
    - manage.py 

与此answer一样,对于外部脚本,y ou can still import the django settings因此:

import os
import django
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()
# now you can use settings.VARIABLE_NAME

但是:这仍然不会把它变成模板,因为从这里将变量变成模板需要你使用django引擎来render一个响应。

如果它没有被django系统服务,它不是模板,它只是一个普通的html文件。

如果它是整个项目中另一个应用中的模板,您可以将其作为上下文字典的一部分传递,as laid out in the docs on templates.