1

我有一个函数views.py,例如这样的:

def get_base_content():
    footer = SiteContent.objects.get(pk=1)
    return {
        "footer" : footer,
}

我如何在我的中调用此函数template并在其中使用footer变量?

4

2 回答 2

2

如果你想在所有模板上显示这个变量,那么你需要实现一个模板上下文处理器

您只需要对代码进行最少的更改:

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 }}

于 2012-11-11T10:33:06.397 回答
1

您将需要创建一个模板标签,对于您的情况,您可能需要查看包含标签

于 2012-11-11T10:00:40.473 回答