通常在写网页的菜单的时候采用的都是统一的导航栏。需要一个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。