2014-02-28 59 views
-1

下面是我的觀點之一,我得到我的網址所期望的結果,即Django的蟒蛇 - 改變蛞蝓不是重定向到404頁

本地主機/員工/ 0001/reportees

但是,當我改變slu of我的網址它不會重定向到404頁面insted它會顯示相同的結果,上面和下面的url給我相同的結果。當slu is改變時,如何讓頁面轉到404。注:兩者顯示同樣的結果達指URL對生成的結果沒有任何影響

本地主機/員工/技術/ reportees

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 

只給一個想法,我有這樣的下面視圖詳細視圖在當我改當員工0001本頁面登錄其重定向到404 蛞蝓顯示了他的個人資料 本地主機/員工/ 0001 其中爲localhost /員工/技術會重定向到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"), 
+0

我不知道爲什麼這個問題得到否定的投票:(這是我問過錯的東西嗎?或者是否有更少的細節解釋問題? – just10minutes

回答

0

您的查詢集僅基於一個會話值(這裏是request.user.employee.empid)。所以每個slu will將會得到相同的結果,對應於當前登錄的員工。
如果要顯示在URL中寫入的slug報告人,則需要修改查詢集以使用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