2015-06-10 22 views
2

我的觀點:Django的類中刪除視圖和驗證

class ModEmailDeleteView(DetailView): 
    model = EmailModel 
    template_name = "email_delete.html" 
    success_url = reverse_lazy('moderator_profile', request.user.id) 

在這裏我要檢查,如果特定提交的用戶請求的用戶則只有他才能刪除。像

if obj.user == request.user 

那麼只有他可以刪除或拋出404

而且如果我有在url多個主鍵?並希望使用這些主鍵

+0

可能重複的[Django基於類的泛型視圖和身份驗證](http://stackoverflow.com/questions/6629426/django-class-based-generic-views-and-authenticati上) – rnevius

回答

1

不同的驗證你可以這樣說:

class ModEmailDeleteView(DeleteView): 
    model = EmailModel 
    template_name = "email_delete.html" 
    success_url = reverse_lazy('moderator_profile', request.user.id) 

    def delete(self, request, *args, **kwargs): 
     self.object = self.get_object() 
     if self.object.user == request.user: 
      self.object.delete() 
      return HttpResponseRedirect(self.get_success_url()) 
     else: 
      raise Http404 #or return HttpResponse('404_url') 
0

有被混入Django的Deleview,你只覆蓋delete 功能,在您看來,

class DeletionMixin(object): 
""" 
A mixin providing the ability to delete objects 
""" 
success_url = None 

def delete(self, request, *args, **kwargs): 
    """ 
    Calls the delete() method on the fetched object and then 
    redirects to the success URL. 
    """ 
    if self.object.user = request.user: 
     self.object.delete()   
    success_url = self.get_success_url() 
    self.object.delete() 
    return HttpResponseRedirect(success_url)