如何向请求添加字段?
How to add fields to a request?
我有一个登录页面。提交后,如果选择 'webmail',请求
应该重定向到网络邮件服务器,提交凭据但是
在不同的键下。这是我现在正在尝试的:
if form.validate_on_submit():
if form.destination.data == 'webmail':
form.rc_user.data = form.email.data
form.rc_password.data = form.password.data
return redirect('https://example.com/webmail/', code=307)
这几乎可以工作:POST
被重定向到网络邮件。然而价值观
提交的是默认值,而不是分配的值。
不过我还有一些问题:
键应该是 _user
和 _pass
,但是 Flask 似乎爆炸了
前导下划线字段名称。
我不想将这些字段添加到原来的 class。我要子class
提交后,大致如下:
if form.validate_on_submit():
if form.destination.data == 'webmail':
class WebmailLoginForm(LoginForm):
rc_user = EmailField('user', default=form.email.data)
form = WebmailLoginForm(request.form)
return redirect('https://example.com/webmail/', code=307)
当我这样做时,添加的字段显示为 UnboundField
而不是
已提交。
当发出 redirect 时,浏览器只是被告知重新提交到另一台服务器。 IE。服务器影响请求为时已晚。
所以要么:开始一个新的请求,要么使用javascript改变提交目标。
感谢我的同事 Johan 开启了我的大脑。
我有一个登录页面。提交后,如果选择 'webmail',请求 应该重定向到网络邮件服务器,提交凭据但是 在不同的键下。这是我现在正在尝试的:
if form.validate_on_submit():
if form.destination.data == 'webmail':
form.rc_user.data = form.email.data
form.rc_password.data = form.password.data
return redirect('https://example.com/webmail/', code=307)
这几乎可以工作:POST
被重定向到网络邮件。然而价值观
提交的是默认值,而不是分配的值。
不过我还有一些问题:
键应该是
_user
和_pass
,但是 Flask 似乎爆炸了 前导下划线字段名称。我不想将这些字段添加到原来的 class。我要子class 提交后,大致如下:
if form.validate_on_submit(): if form.destination.data == 'webmail': class WebmailLoginForm(LoginForm): rc_user = EmailField('user', default=form.email.data) form = WebmailLoginForm(request.form) return redirect('https://example.com/webmail/', code=307)
当我这样做时,添加的字段显示为
UnboundField
而不是 已提交。
当发出 redirect 时,浏览器只是被告知重新提交到另一台服务器。 IE。服务器影响请求为时已晚。
所以要么:开始一个新的请求,要么使用javascript改变提交目标。
感谢我的同事 Johan 开启了我的大脑。