我正在创建一个拥有"类别"作为Django的模特。为了生成侧边栏,我迭代类别并为每个类别创建一个链接,这使我可以使其成为动态。
问题在于,使用当前的方法,我必须将Categories.objects.all()
作为变量放在每个视图的上下文中,并且我确定这不是正确的方法。如何将categories
设置为任何未来View的上下文变量?
答案 0 :(得分:4)
方法是写context processor,你只需要定义一个返回这样的上下文的函数:
def get_my_cool_context(request):
return {}
然后在所有视图中返回您想要使用的所有变量,然后在您的所有视图中都可以获得这样的上下文
context = get_my_cool_context(request)
答案 1 :(得分:1)
创建一个上下文处理器,如:
def categories(request): #written in some file named processor.py
return {'categories': Categories.objects.all()}
然后添加此上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"myapp.processor.categories", #you have added this line to settings
)
现在你可以将foo用作任何模板作为上下文变量。 http://catherinetenajeros.blogspot.com/2013/03/custom-template-context-processors.html