2

내 프로젝트에서 장고의 일반적인 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하고 다음의 DeleteView을 사용할 것 같아요 여기 내 의견의 조각입니다. 이것은 내가 지금까지 가지고 올 한 것입니다 : 당신의

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)