在基本模板中包含视图
Include view in base template
我正在制作一个简单的博客应用程序,我希望在网站每个页面的导航栏中都有博客类别。
我是否必须将 categories = Category.objects.all()
对象传递给每个视图,或者是否有任何简单的方法可以实现此目的?
是的,看context processors:
myapp/context_processors.py
def categories(request):
return {'categories': Category.objects.all()}
然后将其添加到 TEMPLATE_CONTEXT_PROCESSORS
设置中:
TEMPLATE_CONTEXT_PROCESSORS = (
...
"myapp.context_processors.categories",
)
有更简单的解决方案,可以使用template context processor。只需在名为 context_processors 的应用程序文件中创建(该文件的名称无关紧要,但好的做法是这样命名)并在该文件中创建任何将接受请求参数和 return 的函数带有附加上下文变量的字典。示例:
from .models import Category
def categories(request):
categories = Category.objects.all()
return {
'categories': categories,
}
现在只需将您的上下文处理器添加到设置中:
TEMPLATE_CONTEXT_PROCESSORS += (
'yourapp.context_processors.categories',
)
我正在制作一个简单的博客应用程序,我希望在网站每个页面的导航栏中都有博客类别。
我是否必须将 categories = Category.objects.all()
对象传递给每个视图,或者是否有任何简单的方法可以实现此目的?
是的,看context processors:
myapp/context_processors.py
def categories(request):
return {'categories': Category.objects.all()}
然后将其添加到 TEMPLATE_CONTEXT_PROCESSORS
设置中:
TEMPLATE_CONTEXT_PROCESSORS = (
...
"myapp.context_processors.categories",
)
有更简单的解决方案,可以使用template context processor。只需在名为 context_processors 的应用程序文件中创建(该文件的名称无关紧要,但好的做法是这样命名)并在该文件中创建任何将接受请求参数和 return 的函数带有附加上下文变量的字典。示例:
from .models import Category
def categories(request):
categories = Category.objects.all()
return {
'categories': categories,
}
现在只需将您的上下文处理器添加到设置中:
TEMPLATE_CONTEXT_PROCESSORS += (
'yourapp.context_processors.categories',
)