【发布时间】:2016-03-06 22:47:19
【问题描述】:
我的问题与this 非常相似,但不幸的是,该解决方案对我不起作用。
我创建了一个网络应用程序,并且有一个“以用户身份登录”按钮,该按钮应将用户重定向到登录表单。
app.py 文件如下所示:
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
if request.form['action'] == 'Login as Guest':
create_user(request, session)
elif request.form['action'] == 'Login as User':
return redirect(url_for('login'), code=307)
elif request.form['action'] == 'Delete User':
delete_user(request, session)
else:
abort("invalid form")
return redirect(url_for('start'))
return render_template('index.html', username=session.get('username'))
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
return render_template('login.html', username=session.get('username'))
login.html 表单如下:
<form class="form" action="" method="POST">
<input type="text" placeholder="Username" name="username">
<input type="password" placeholder="Password" name="password">
<input class="btn btn-lg btn-success" name="login" type="submit" value="Login">
</form>
index.html 表单看起来像:
<form class="form" action="" method="POST">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<input type="submit" name="action" class="btn btn-lg btn-success {% if username == None %}disabled{% endif %}" value="Delete User">
<input type="submit" name="action" class="btn btn-lg btn-success {% if username %}disabled{% endif %}" value="Login as Guest">
<input type="submit" name="action" class="btn btn-lg btn-success {% if username %}disabled{% endif %}" value="Login as User">
</form>
即使我在return redirect(url_for('login'), code=307) 调用中添加了code = 307 并且请求方法是POST,但当我单击以用户身份登录 按钮时,我收到以下错误:
错误请求
浏览器(或代理)发送了此服务器无法发送的请求 明白。
【问题讨论】:
标签: python redirect post flask get