sgr*_*fee 8 python tags django templates
创建一个在模板上显示Django版本的Django模板标签的最简单方法是什么?
我想将以下内容放在Django模板中并输出Django版本(在我的例子中,base.html):
{{ django_version }}
Run Code Online (Sandbox Code Playgroud)
我知道以下Python代码在shell中输出Django版本,但我对应该放置此代码的位置以及如何从模板中调用它感到困惑:
import django
print django.VERSION
Run Code Online (Sandbox Code Playgroud)
更新:我在views.py中尝试了以下内容,但模板中没有显示任何内容:
import django
from django.template import loader, Context
from django.http import HttpResponse
from django.shortcuts import render_to_response
def base(request):
django_version = django.VERSION
return render_to_response('base.html', {'django_version': django_version} )
Run Code Online (Sandbox Code Playgroud)
一个简单的上下文处理器会做你想做的
上下文处理器.py
import django
def django_version(request):
return { 'django_version': django.VERSION }
Run Code Online (Sandbox Code Playgroud)
不要忘记在您的设置中包含此上下文处理器 TEMPLATE_CONTEXT_PROCESSORS
想通了这一点(目前使用Django 1.3) -我需要追加的功能名称"django_version"到TEMPLATE_CONTEXT_PROCESSORS元组settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
# ...
'myproject.context_processors.django_version',
)
Run Code Online (Sandbox Code Playgroud)
context_processors.py(感谢zsquare):
import django
def django_version(request):
return { 'django_version': django.VERSION }
Run Code Online (Sandbox Code Playgroud)
urls.py:
urlpatterns += patterns('django.views.generic.simple',
(r'^$', 'direct_to_template', {'template': 'base.html'}),
)
Run Code Online (Sandbox Code Playgroud)
将以下内容放在模板中,例如base.html:
{{ django_version }}
Run Code Online (Sandbox Code Playgroud)