Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 基于类的泛型视图和属性_Django_Django Views - Fatal编程技术网

Django 基于类的泛型视图和属性

Django 基于类的泛型视图和属性,django,django-views,Django,Django Views,我在Django 1.3中实现了基于类的视图,我发现自己处于这样的场景中,我的CreateView、UpdateView和DeleteView几乎相同。有没有一种方法可以只用一个视图CreateUpdateView或类似的东西来实现这一点,或者这是实现CBGV的标准方法 此外,在ThingyAdd中,我没有像在ThingyEdit中那样指定模型,但它们都可以正常工作。我假设模型是由form_类ThingyForm的元部分中定义的模型隐含/提取的,ThingyForm是一个ModelForm。这个

我在Django 1.3中实现了基于类的视图,我发现自己处于这样的场景中,我的CreateView、UpdateView和DeleteView几乎相同。有没有一种方法可以只用一个视图CreateUpdateView或类似的东西来实现这一点,或者这是实现CBGV的标准方法

此外,在ThingyAdd中,我没有像在ThingyEdit中那样指定模型,但它们都可以正常工作。我假设模型是由form_类ThingyForm的元部分中定义的模型隐含/提取的,ThingyForm是一个ModelForm。这个假设正确吗

class ThingyAdd(AuthMixin, CreateView):
    form_class = ThingyForm
    context_object_name='object'
    template_name='change_form.html'
    success_url='/done/'

class ThingyEdit(AuthMixin, UpdateView):
    model = Thingy
    form_class = ThingyForm
    context_object_name='object'
    template_name='change_form.html'
    success_url='/done/'

class ThingyDelete(AuthMixin, DeleteView):
    model = Thingy
    form_class = ThingyForm
    context_object_name='object'
    template_name='delete_confirmation.html'
    success_url='/done/'

您可以创建另一个mixin

class ThingyMixin(object):
  model=Thingy
  form_class=ThingyForm
  template_name='change_form.html'
  context_object_name='object'
  success_url='/done/'
那么在你看来,

class ThingyAdd( AuthMixin, ThingyMixin, CreateView ):
  pass

class ThingyEdit( AuthMixin, ThingyMixin, UpdateView ):
  pass

class ThingyDelete( AuthMixin, ThingyMixin, DeleteView ):
  template_name='delete_confirmation.html'

太好了,谢谢。我是否需要指定模型属性,或者它是由form_类上的模型暗示的?您应该只需要在DeleteView上提供一个模型属性。