icn*_*icn 18 django django-templates
我有一个公共数据{登录用户的消息号),以显示在每个页面上.我可以简单地传递给模板
dict={'messagenumber':5}
return render_to_response('template.html',dict,context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
但是如果我将这个dict数据传递到非常页面,那看起来很乏味.有没有更简单的方法将公共数据传递到每个页面?
谢谢
Bar*_*tek 17
它让我感到非常普遍.你想用我的朋友上下文处理器!
很容易创建,如下所示:
def messagenumber_processor(request):
return {'messagenumber': 5}
Run Code Online (Sandbox Code Playgroud)
由于messagenumber是基于User的动态变量,因此您可以通过从每个上下文处理器中request.user
拥有完全访问权限来获取数据request
.
然后,将它添加到您TEMPLATE_CONTEXT_PROCESSORS
的settings.py内,并且您已全部设置:-)您可以在上下文处理器中执行任何形式的数据库操作或其他逻辑,试一试!
Jam*_*Lin 17
只是为了节省一个人的时间,如果django新
settings.py
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.contrib.messages.context_processors.messages",
"home.context_processor.remote_ip")
Run Code Online (Sandbox Code Playgroud)
在home应用程序中,创建一个名为context_processor.py的python文件
在context_processor.py中添加如下函数:
def remote_ip(request):
return {'remote_ip': request.META['REMOTE_ADDR']}
Run Code Online (Sandbox Code Playgroud)
在{{remote_ip}}等模板中使用它
归档时间: |
|
查看次数: |
4842 次 |
最近记录: |