Django客户访问计算列表时错误渲染管理员模板问题排查
问题根因
Django 通用类视图ListView会默认根据绑定的model自动生成模板路径,规则为<应用名>/<模型名小写>_list.html。你的两个列表视图都绑定了Calculation模型,所以默认都会匹配cycle/calculation_list.html(也就是管理员的模板),才会出现数据正确但模板渲染错误的问题。
修复方案
1. 手动指定客户视图的模板路径
在CalculationsByUserListView类中显式添加template_name属性,指定为客户专属模板即可,修改后的视图代码如下:
#Users' view function class CalculationsByUserListView(LoginRequiredMixin, generic.ListView): model = Calculation paginate_by = 10 # 新增这一行,手动指定模板 template_name = 'cycle/calculations_user.html' def get_queryset(self): return Calculation.objects.filter(userid=self.request.user)
这一步修改完成后,访问mycalcs路由就会正确渲染客户模板,测试用例可以直接通过,不需要改动原有URL配置,也就不会出现NoReverseMatch错误。
2. 若已修改过URL导致NoReverseMatch,排查以下两点
- 检查
urls.py中对应路由的name属性是否和你代码中reverse、模板{% url %}标签调用的名称完全一致 - 保持
mycalcs路由的name='mycalcs'不变即可匹配现有测试和业务代码的路由调用
内容的提问来源于stack exchange,提问作者Fatima
相关产品推荐
相关产品推荐

