使用 get 方法的 FormView 不显示表单
FormView with get method doesn't show the form
感谢阅读:/
当我从视图中删除 "get" 时,表单有效,但当我将其放回去时,它不呈现。
URL 在浏览器:
http://127.0.0.1:8000/activate?tpr=1140277&idpr=42
URLs:
url(r'^activate', Activation_vw.as_view(), name='activate')
查看:
class Activation_vw(FormView):
template_name = 'activate.html'
form_class = Activation_Form
success_url = '/dashboard/'
def get(self, request, *args, **kwargs):
tokenProspect_v = request.GET.get('tpr')
idProspect_v = request.GET.get('idpr')
USER = USERS.objects.filter(
id=idProspect_v).values('id', 'email', 'token')
if int(tokenProspect_v) != int(USER[0]['token']):
message = "Check the URL"
else:
message = USER[0]['email']
context = {'msg': message}
return self.render_to_response(context)
def form_valid(self, form):
# No code yet
return super(Activation, self).form_valid(form)
表格:
class Activation_Form(forms.Form):
email = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput())
模板:
Hello, {{ msg }}
<form action="" method="POST">
{%csrf_token%}
{{ form.as_p }}
<button type="submit">Activate</button>
</form>
它们在每个文件的顶部都有导入。
get
函数完美运行,我收到 tpr
和 idpr
但 form
没有收到,因此 form_valid
并且 success_url
也不起作用。
我怀疑我的 get
的 return 有问题,但无法弄清楚。
这是因为你的form
没有在上下文中传递:
context = {'msg': message}
return self.render_to_response(context)
您可以使用 get_context_data
获取上下文并随时更新它:
context = self.get_context_data(msg=message)
return self.render_to_response(context)
这将从超级 class 调用 get_context_data
并将 form
添加到上下文中,同时添加 message
.
感谢阅读:/
当我从视图中删除 "get" 时,表单有效,但当我将其放回去时,它不呈现。
URL 在浏览器: http://127.0.0.1:8000/activate?tpr=1140277&idpr=42
URLs:
url(r'^activate', Activation_vw.as_view(), name='activate')
查看:
class Activation_vw(FormView):
template_name = 'activate.html'
form_class = Activation_Form
success_url = '/dashboard/'
def get(self, request, *args, **kwargs):
tokenProspect_v = request.GET.get('tpr')
idProspect_v = request.GET.get('idpr')
USER = USERS.objects.filter(
id=idProspect_v).values('id', 'email', 'token')
if int(tokenProspect_v) != int(USER[0]['token']):
message = "Check the URL"
else:
message = USER[0]['email']
context = {'msg': message}
return self.render_to_response(context)
def form_valid(self, form):
# No code yet
return super(Activation, self).form_valid(form)
表格:
class Activation_Form(forms.Form):
email = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput())
模板:
Hello, {{ msg }}
<form action="" method="POST">
{%csrf_token%}
{{ form.as_p }}
<button type="submit">Activate</button>
</form>
它们在每个文件的顶部都有导入。
get
函数完美运行,我收到 tpr
和 idpr
但 form
没有收到,因此 form_valid
并且 success_url
也不起作用。
我怀疑我的 get
的 return 有问题,但无法弄清楚。
这是因为你的form
没有在上下文中传递:
context = {'msg': message}
return self.render_to_response(context)
您可以使用 get_context_data
获取上下文并随时更新它:
context = self.get_context_data(msg=message)
return self.render_to_response(context)
这将从超级 class 调用 get_context_data
并将 form
添加到上下文中,同时添加 message
.