我的数据库中有
category
和 subcategory
存储,并且 subcategory
与 category
相关,我的网站上有多个页面,但我可以在某些页面的菜单中显示类别,但我想要在所有页面上显示,所以我找到了使用 context_processor 的解决方案,但我无法在那里渲染 HTML 文件,它只需要字典文件中的数据,请检查我的代码并让我知道我错在哪里。
这是我的
models.py
文件...
class Category(models.Model):
cat_name=models.CharField(max_length=225)
cat_slug=models.SlugField(max_length=225, unique=True)
def __str__(self):
return self.cat_name
class SubCategory(models.Model):
subcat_name=models.CharField(max_length=225)
subcat_slug=models.SlugField(max_length=225, unique=True)
category = models.ForeignKey('Category', related_name='subcategoryies', on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return self.subcat_name
这是我的
context_processor.py
文件...
from django.shortcuts import render
from dashboard.models import Category, SubCategory
def context_categories(request, cat_slug):
category = Category.objects.all().order_by('-created_at')
return render(request, "base.html", {'category':category})
将此文件包含在
settings.py
部分下的TEMPLATES
文件中
'mainpage.context_processors.context_categories',
这是我的
base.html
文件...
{% for cat in category %}
<li>
<a href="javascript:void()">{{cat.cat_name}}</a>
<ul>
{% for subcat in cat.subcategoryies.all %}
<li><a href="/subcategory/{{subcat.subcat_slug}}">{{subcat.subcat_name}}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
上下文处理器不渲染模板。它应该返回一本字典。它应该只接受请求作为参数。所以你的 context_processor.py 应该是这样的:
`从仪表板.模型导入类别
def context_categories(请求):
category = Category.objects.all().order_by('-created_at')
返回{ “类别”:类别 } `