django:从模板中的视图调用函数
Posted
技术标签:
【中文标题】django:从模板中的视图调用函数【英文标题】:django: call function from views in template 【发布时间】:2012-11-11 09:56:56 【问题描述】:我在views.py
中有一个函数,例如这样的:
def get_base_content():
footer = SiteContent.objects.get(pk=1)
return
"footer" : footer,
如何在我的template
中调用此函数并在其中使用footer
变量?
【问题讨论】:
【参考方案1】:如果你想在所有模板上显示这个变量,那么你需要实现一个template context processor。
您只需对代码进行少量更改:
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
shortcut:
from django.shortcuts import render
def myview(request):
return render(request,'hello.html','foo': 'bar')
在hello.html
中,您将拥有 foo
和 footer
【讨论】:
【参考方案2】:您需要创建一个模板标签,对于您的情况,您可能需要查看inclusion tag。
【讨论】:
以上是关于django:从模板中的视图调用函数的主要内容,如果未能解决你的问题,请参考以下文章
我如何从 jQuery Datatables 调用 django 视图?
Django / Python:使用Template中的参数调用模型/类函数