繁体   English   中英

Django:模板上下文处理器在一个元组条目中声明所有功能

[英]Django: Template Context Processor declare all functions in one tuple entry

有没有一种方法可以在一个元组条目中声明所有自定义模板上下文处理器功能?

# Templates Related Settings
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    "myapp.context_processors.remote_ip_address_processor"
)

context_processors.py

def remote_ip_address_processor(request):
    return {'REMOTE_IP_ADDRESS': request.META['REMOTE_ADDR']}

并且我们可以通过标签{{ REMOTE_IP_ADDRESS }}在所有模板中全局使用。

如果我们的context_processors.py包含10个不同的处理器(函数),该怎么办? 我们是否必须在TEMPLATE_CONTEXT_PROCESSORS元组中列出每一项,还是可以通过"myapp.context_processors.*"类的文件一次将其全部声明? 我知道通配符将不起作用,但按照这些原则起作用。 必须在同一个context_processors.py文件中声明多个函数,这很烦人。

您必须一个一个地声明:

django.core.context_processors .debug”,
django.core.context_processors .i18n”,
django.core.context_processors .media”,
django.core.context_processors .static”,

必须这样设置,因为条目之间存在优先顺序。

为什么要麻烦所有功能呢? 无论如何,它们都将用于每个请求,所以没有必要将它们分开。 只需从一个字典中的一个函数返回所有内容即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM