【发布时间】:2013-03-07 08:46:36
【问题描述】:
我正在尝试在 Django 1.5 中使用通用视图,这有点令人困惑。 到目前为止,我一直在使用 views.py 中的函数。我同意函数方法有更多的样板代码,但同时作为开发人员,您对它有更多的控制权。不过为了学习。让我们考虑这个部分代码:
if request.method == 'POST':
if 'invitation' in request.session:
invitation = Invitation.objects.get(id=request.session['invitation'])
profile = invitation.sender.get_profile()
form = RegistrationForm(request.POST, is_accept_invite = True, _email = invitation.email)
else:
form = RegistrationForm(request.POST)
if form.is_valid():
...
按照我的理解,通用视图考虑三种状态:GET、POST -> Valid、POST -> invalid()。
但上面的代码是 POST -> form.validation 之前的条件,以相应地实例化表单
这是我想出的通用视图:
class RegisterView(FormView):
template_name = 'register.html'
form_class = RegisterForm
success_url = '/registration_successfull/'
def form_valid(self, form):
...
def form_invalid(self, form):
...
我想我需要覆盖 get_form(form_class) 或 get_form_kwargs() 来检查我的 request.session 并相应地实例化 RegistrationForm。那是对的吗?有什么例子可以做到这一点吗?我在文档中找不到任何示例。
【问题讨论】:
标签: django django-generic-views django-1.5