Django CRM系统机构账号登录报错及页面渲染异常问题咨询
问题修复方案
1. 修复NoReverseMatch错误和登录跳转404问题
你首页路由挂载在/leads/前缀下,根路径/没有配置对应路由;原来的NoReverseMatch错误是因为你传入空字符串作为反向解析参数,找不到对应路由名导致的。修改login_handle中的跳转逻辑,两种方案二选一:
- 方案一(推荐,使用路由名反向解析):
修改跳转代码为:return redirect('index') - 方案二(硬编码路径):
修改跳转代码为:return redirect('/leads/')
2. 修复超级用户登录提示需要机构实例问题
你的首页视图直接查询当前用户关联的Organization实例,超级用户默认没有关联该实例,需要在index视图中增加角色判断逻辑,示例代码如下:
def index(request): if not request.user.is_authenticated: return redirect('login_page') # 超级用户逻辑分支 if request.user.is_superuser: # 此处补充超级用户仪表盘需要的全局数据 context = {} return render(request, 'super_dashboard.html', context) # 机构账号判断分支 try: org = Organization.objects.get(user=request.user) context = {"org": org} return render(request, 'org_dashboard.html', context) except Organization.DoesNotExist: # 坐席账号判断分支 try: agent = Agent.objects.get(user=request.user) context = {"agent": agent, "org": agent.organization} return render(request, 'agent_dashboard.html', context) except Agent.DoesNotExist: return redirect('login_page')
3. 补充其他代码隐患修复
Agent模型的organization外键默认值设置错误,当前设置为空字符串不符合外键字段规范,修改为:organization = models.ForeignKey(Organization,on_delete=models.PROTECT,blank=True,null=True)signup_handle视图中重复写了两次pass2 = request.POST.get('re_pass'),删除冗余的一行即可。
内容的提问来源于stack exchange,提问作者sarangkkl
相关产品推荐
相关产品推荐

