【发布时间】:2018-03-17 05:00:15
【问题描述】:
我想创建一个视图函数 + 模板,它显示一个简单的表单(从用户模型派生)并捕获表单提交。如何在 Django 中使用通用视图来做到这一点?
我的用户模型是:
class User(models.Model):
email = models.EmailField(unique=True)
name = models.CharField(max_length=100)
我只需要捕获表单中的电子邮件字段。
我认为必须有一种使用通用表单的简单方法来执行此操作,但是我不确定要使用哪一个,也不知道该怎么做。我知道的唯一其他方法是:
1) 显式创建 UserForm 和一个分离 POST 和 GET 请求的单一视图函数。例如,:
def contact(request):
if request.method == 'GET':
# display UserForm
....
elif request.method == 'POST':
# process form submission
....
2) 创建两个视图(具有单独的 URL) - 一个使用通用视图来显示表单,另一个视图用于接收表单提交,例如:
class contact(generic.DetailView):
# display form from User model
model = User
....
def submit(request):
# process form submission
....
所以,我的两个问题是:
- 仅使用通用视图可以以及应该如何实现?
- 应该使用哪个通用视图?
【问题讨论】: