python - 在模板中使用 Django 设置

标签 python django django-templates

我希望能够将某些配置信息放入我的 settings.py 文件中 - 例如站点名称、站点 URL 等。

如果这样做,我如何才能访问模板中的这些设置?

谢谢

最佳答案

假设在您的 settings.py 文件中,您拥有:

SITE_URL='www.mydomain.tld/somewhere/'
SITE_NAME='My site'

如果您只需要一两个 View :

from django.shortcuts import render_to_response
from django.conf import settings

def my_view(request, ...):
    response_dict = {
        'site_name': settings.SITE_NAME,
        'site_url': settings.SITE_URL,
    }
    ...
    return render_to_response('my_template_dir/my_template.html', response_dict)

如果您需要跨大量应用和/或 View 访问这些内容,您可以编写上下文处理器来保存代码:

詹姆斯对此有一个教程 online .

有关上下文处理器何时以及是否在此站点上可用的一些有用信息 here .

在您的 my_context_processors.py 文件中,您会:

from django.conf import settings

def some_context_processor(request):
    my_dict = {
        'site_url': settings.SITE_URL,
        'site_name': settings.SITE_NAME,
    }

    return my_dict

回到你的settings.py,激活它:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...

    # yours
    'my_context_processors.some_context_processor',
)

在您的 views.py 中,让 View 像这样使用它:

from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view(request, ...):  
    response_dict = RequestContext(request)
    ...
    # you can still still add variables that specific only to this view
    response_dict['some_var_only_in_this_view'] = 42
    ...
    return render_to_response('my_template_dir/my_template.html', response_dict)

关于python - 在模板中使用 Django 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430451/

相关文章:

python - 比较 2 个整数列表

python - graphviz Python Node Shapes - 节点中的饼图

python - 如何检查 ansible 任务返回的数组中是否存在字符串

python - 跨组滚动唯一性 + pandas 中的时间

python - 删除 `settings.py` 中 celery scheduler 的周期性任务不会删除实际任务

django - 为 django 评论表单分配唯一 ID

python - 如何将 django 1.4 的正则表达式转换为 django 2.0 样式路径?

python - Django 表单不保存图像文件

python - 模板文件中的 Django urldecode

django - 将python字典中的数据呈现给django模板。?