通常在写网页的菜单的时候采用的都是统一的导航栏。需要一个base页面,其他页面就继承base页面。base页面中的导航条是从数据库中获取。通过djano渲染到base页面。但是其他页面直接继承base页面是获取不到导航条的动态数据的。采用重写render的方法解决这个问题。
1.在django的项目的中新建一个py文件,创建一个工具类。
from django.shortcuts import render
from net import models #从app中导入数据库
class RenderWrite(object): #新建一个工具类 def render_template(request, template_name, context=None, content_type=None, status=None, using=None): p_list = [] c_list = [] cate = models.OdooCategory.objects.all() for c in cate: data = { 'name': c.name, 'id': c.id } pro = models.OdooProducts.objects.filter(odoocategory=c.id) for p in pro: p_list.append(p) c_list.append(data) if isinstance(context, dict): context["c_list"] = c_list #需要的菜单列表 context['p_list'] = p_list else: context = { "c_list": c_list, 'p_list':p_list } return render( request=request, template_name=template_name, context=context, content_type=content_type, status=status, using=using ) 2.在views中引入,将render代替为render_template。 |