'context_processors': [
...
...
"publicfront.views.context_processors.add_event_url"
],
我在settings.py中添加了此上下文处理器,并且只想用于特定应用。我怎么能做到这一点?
答案 0 :(得分:2)
为所有请求运行上下文处理器。
如果你需要模仿你所说的功能,那么你可以在上下文处理器函数中添加一些if / else条件,它将请求对象作为第一个参数,这样你就可以确定哪个应用程序正在运行并填充返回的相应的词典
答案 1 :(得分:0)
到目前为止,我找到的大多数答案都是关于在网站的context_processors
中添加settings.py
。但是我希望我的应用程序成为一个独立的开发部门。在部署时,我不想在站点上执行本应包含在发行版中的不必要的调整。正如上面已经由Daniel Roseman暗示的那样,我们可以使用自定义标签(doc):
# file `extras.py`
from django.template.defaultfilters import register
import platform
CURRENT_OS = platform.system()
@register.simple_tag
def current_os():
return CURRENT_OS
可以这样使用:
{% load extras %}
. . .
<div>{% current_os %}</div>
由于request
对象可在模板中访问,因此可以使用自定义过滤器(doc)进行处理,如下所示:
# file `extras.py`
@register.filter
def my_filter(req):
return req.GET.get('q')
用法:
<div>You searched for '{{ request|my_filter }}'.</div>