如何在Django中的Context_processor中设置菜单数据?

问题描述 投票:0回答:1

我的数据库中有

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 %}
django django-models django-views django-templates django-context
1个回答
0
投票

上下文处理器不渲染模板。它应该返回一本字典。它应该只接受请求作为参数。所以你的 context_processor.py 应该是这样的:

`从仪表板.模型导入类别

def context_categories(请求):

category = Category.objects.all().order_by('-created_at')

返回{ “类别”:类别 } `

© www.soinside.com 2019 - 2024. All rights reserved.