假设我想创建一个Class Based View,其中updatescreates都是对象.从我算出的previous question分开始,我可以做以下事情之一:

1)使用2个通用视图CreateViewUpdateView,我认为这意味着有两个URL指向两个不同的类.

2)使用继承基数View的基于类的视图,我认为这意味着有两个URL只指向一个类(我创建的继承View的).

我有两个问题:

a) Which is better?

b) ccbv.co.uk表示基本View,但我没有看到任何get、post等方法的记录,对吗?

推荐答案

为什么需要通过单个视图同时处理创建和更新?拥有两个独立的视图要简单得多,每个视图都继承自其各自的通用视图类.如果您愿意,它们可以共享相同的表单和模板,而且它们很可能来自不同的URL,所以我看不出将其放到单个视图中会得到什么.

所以:使用两个视图,一个继承自CreateView,另一个继承自UpdateView.这些方法几乎可以处理你可能需要的一切,而第二种方法需要你自己重新发明轮子.如果您在创建或更新对象时都使用了一些常见的"内务管理"代码,那么可以 Select 使用mixin,或者您也可以创建自己的视图,覆盖这两个用例,从CreateViewUpdateView继承.

Django相关问答推荐

Django Signals:从实例访问ManyToManyRel值

Django迁移嵌套模型时出错,不带迁移基本模型

当使用django-tinymce时,我在哪里指定referer?

Django 隐藏特定人员的媒体文件链接

django.template.response.ContentNotRenderedError: 必须渲染响应内容才能迭代

如何在 Django 模板中的计数器上进行 for 循环中断?

在 settings.py 中指定 Django 测试数据库名称

Playframework 和 Django

使用 south 重构具有继承的 Django 模型

如何在不使用 sudo 的情况下安装 virtualenv?

Django:通过manage.py使用服务器和gunicorn等其他服务器之间的区别.哪个更好?

如何在 django 中处理这种竞争条件?

用于测试文件下载的 Django 单元测试

在 django 模板中遇到 user.is_authenticated 问题

Python:获取异常的错误消息

如何在 Django 中触发 500 错误?

如何向所有 Django 响应添加 HTTP 标头

显式 cursor.close() 的必要性

Python/Django - 避免在源代码中保存密码

过滤查询参数