我有一个函数views.py
,例如这样的:
def get_base_content():
footer = SiteContent.objects.get(pk=1)
return {
"footer" : footer,
}
我如何在我的中调用此函数template
并在其中使用footer
变量?
如果你想在所有模板上显示这个变量,那么你需要实现一个模板上下文处理器。
您只需要对代码进行最少的更改:
def get_base_content(request):
footer = SiteContent.objects.get(pk=1)
return {"footer" : footer}
现在,将它添加到一个单独的文件中,调用它custom_context.py
。在您settings.py
将其添加到您的TEMPLATE_CONTEXT_PROCESSORS
设置中:
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.custom_context.get_base_content", # don't forget the comma!
)
现在,在您的视图代码中,您只需要确保您使用的是RequestContext
. 最简单的方法是使用render
快捷方式:
from django.shortcuts import render
def myview(request):
return render(request,'hello.html',{'foo': 'bar'})
在hello.html
你将拥有{{ foo }}
和{{ footer }}
您将需要创建一个模板标签,对于您的情况,您可能需要查看包含标签。