gpt4 book ai didi

django - 基于类的通用 View 和 DRY

转载 作者:行者123 更新时间:2023-12-02 02:09:12 27 4
gpt4 key购买 nike

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

此外,在 ThingyAdd 中,我没有像在 ThingyEdit 中那样指定模型,但它们都运行良好。我假设该模型是由在 form_class 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'

关于django - 基于类的通用 View 和 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com