Django python更改slug不重定向到404页

2024-10-06 12:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的一个视图,我在我的url上得到了想要的结果

localhost/employee/0001/报告对象

但是,当我改变我的网址slug它不会重定向到404页,而我将显示相同的结果,上面和下面的网址给我相同的结果。如何使页面转到404时,段塞被改变。注意:两者显示相同的结果tat表示url对生成的结果没有影响

localhost/employee/0002/报告对象

class EmployeeReporteeView(LoginRequiredMixin, ListView):
    model = employee
    template_name = "employee_reportees.html"
    slug_field = "slug"
    def get_context_data(self, **kwargs):
        self.base_qs = super(EmployeeReporteeView, self).get_queryset()
        context = super(EmployeeReporteeView, self).get_context_data(**kwargs)
        context['primary_list'] =     self.base_qs.filter(primary=self.request.user.employee.empid)
        context['secondary_list'] = self.base_qs.filter(secondary=self.request.user.employee.empid)
        return context

只是给一个想法,我有下面这个细节视图视图,当我改变slug重定向到404 当员工0001登录时,此页面显示其个人资料 localhost/员工/0001 其中,as localhost/employee/0002将重定向到404,因为他看不到其他员工的详细信息

class EmployeeDetailView(LoginRequiredMixin, DetailView):
    model = employee
    template_name = "employee_detail.html"
    context_object_name = "employee_detail"
    def get_queryset(self):
        base_qs = super(EmployeeDetailView, self).get_queryset()
        return base_qs.filter(email=self.request.user)

# urls.py
     url(r"^(?P<slug>[\w-]+)/$", EmployeeDetailView.as_view(), name="employee_detail"),
     url(r"^(?P<slug>[\w-]+)/reportees/$", EmployeeReporteeView.as_view(), name="employee_reportees"),

Tags: nameself视图localhosturlbasegetcontext
1条回答
网友
1楼 · 发布于 2024-10-06 12:30:16

查询集仅基于一个会话值(这里是request.user.employee.empid)。因此,每个slug都会给出相同的结果,对应于当前登录的员工。
如果要显示在URL中编写的slug的报告对象,需要修改queryset以使用slug参数。比如:

def get_context_data(self, **kwargs):
    self.base_qs = super(EmployeeReporteeView, self).get_queryset()
    context = super(EmployeeReporteeView, self).get_context_data(**kwargs)
    context['primary_list'] = self.base_qs.filter(primary=self.kwargs['slug'])
    context['secondary_list'] = self.base_qs.filter(secondary=self.kwargs['slug'])
    return context

相关问题 更多 >