2012-11-11 89 views
1

功能我有一个函数在views.py,例如像这样:Django的:从打电话意见模板

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

我如何可以调用这个函数在我template,并在其中使用footer变量?

回答

2

如果你想让这个变量显示在所有的模板上,那么你需要实现一个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 }}

+0

这正是我需要的,谢谢! – yital9