2

我一直在使用Django的通用CRUD视图来处理项目中的很多事情。我现在想开始迁移到DJango 1.3中基于类的基于类的通用CRUD视图。我没有发现文档是非常有帮助的,可以使用一些帮助来转换我的一些基于函数的视图。下面是我的看法片段:将基于旧功能的通用CRUD视图转换为基于新样式类的通用CRUD视图

def create_domains(request, *args, **kwargs): 
    return create_object(request=request, form_class=DomainForm, 
     template_name='customer/create_domains.html', 
     post_save_redirect=reverse('manage_domains') 
    ) 

def delete_domains(request, object_id, *args, **kwargs): 
    return delete_object(request=request, 
     object_id=object_id, model=Domain, 
     template_name='customer/delete_domains.html', 
     post_delete_redirect=reverse('manage_domains') 
    ) 

我想我会使用的第一个CreateView,并为下一个​​。这是我想出迄今:

class DomainCreateView(CreateView): 
    form_class = DomainForm 
    template_name = 'create_domains.html' 
    success_url = 'manage_domains' 

class DomainDeleteeView(CreateView): 
    model = Domain 
    template_name = 'delete_domains.html' 
    success_url = 'manage_domains' 
    pk_url_kwarg = object_id 

莫非你一个告诉我重写相同的基于类的看法?一个小小的跳跃开始将是一个很大的帮助,我相信我可以从那里开始。

谢谢。

回答

3

在挖掘了Django资源后,我发现了如何去做。

class DomainCreateView(CreateView): 
    """ 
    Creates a Domain 
    """ 
    form_class = DomainForm 
    template_name = 'customer/create_domains.html' 
    success_url = reverse_lazy('manage_domains') 

    @method_decorator(login_required) 
    @method_decorator(only_managers_allowed) 
    def dispatch(self, *args, **kwargs): 
     """ 
     The Dispatcher 
     """ 
     return super(DomainCreateView, self).dispatch(*args, **kwargs) 

    def form_valid(self, form): 
     """ 
     Validate and save the form 
     """ 
     company = self.request.user.get_profile().company 
     self.object = form.save(company) 
     return super(ModelFormMixin, self).form_valid(form) 


class DomainDeleteView(DeleteView): 
    """ 
    Deletes a Domain 
    """ 
    model = Domain 
    template_name = 'customer/delete_domains.html' 
    success_url = reverse_lazy('manage_domains') 

    @method_decorator(login_required) 
    @method_decorator(only_managers_allowed) 
    def dispatch(self, *args, **kwargs): 
     """ 
     The Dispatcher 
     """ 
     return super(DomainDeleteView, self).dispatch(*args, **kwargs) 
相关问题