我使用python flask创建了简单的登录表单,但无法重定向到我的主页,
我的PYID在窗口运行我使用python flask创建了简单的登录表单,但无法重定向到我的主页,,python,flask,pycharm,flask-wtforms,wtforms,Python,Flask,Pycharm,Flask Wtforms,Wtforms,我的PYID在窗口运行 Restarting with stat * Debugger is active! * Debugger PIN: 127-177-535 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Detected change in 'C:\\Users\\ACER\\PycharmProjects\\wtf-forms\\forms.py', reloading * Restarting wi
Restarting with stat
* Debugger is active!
* Debugger PIN: 127-177-535
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Detected change in 'C:\\Users\\ACER\\PycharmProjects\\wtf-forms\\forms.py', reloading
* Restarting with stat
* Debugger is active!
* Debugger PIN: 127-177-535
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [05/Feb/2021 21:57:38] "POST /login HTTP/1.1" 200 -
127.0.0.1 - - [05/Feb/2021 21:57:39] "POST /login HTTP/1.1" 200 -
127.0.0.1 - - [05/Feb/2021 21:57:39] "POST /login HTTP/1.1" 200 -
我在浏览器中键入了127.0.0.1/login,并显示了登录表单。当我将数据输入表单时,web浏览器中不会显示错误,但无法重定向到主页
在我的浏览器控制台中,我发现了这个错误
登录:1未经检查的运行时。lastError:消息端口在收到响应之前关闭
这是我的python代码,
from flask import Flask,redirect,render_template
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length
class LoginForm(FlaskForm):
email =StringField("Email",validators=[DataRequired(),Email()])
password = PasswordField("Password",validators=[DataRequired(),Length(min=4,max=10)])
submit =SubmitField("Log In")
app=Flask(__name__)
app.config["SECRET_KEY"]="secret"
@app.route("/")
def Home():
return "Hello World"
@app.route("/login",methods=["POST","GET"])
def Index():
form=LoginForm()
if form.validate_on_submit():
return redirect("Home")
return render_template("index.html",form=form)
if __name__ =="__main__":
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form</title>
</head>
<body>
<form action="" method="POST">
{{form.email.label()}}
{{form.email()}}
<br><br>
{{form.password.label()}}
{{form.password()}}
<br><br>
{{form.submit()}}
</form>
</body>
</html>
这是我的HTML代码,
from flask import Flask,redirect,render_template
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length
class LoginForm(FlaskForm):
email =StringField("Email",validators=[DataRequired(),Email()])
password = PasswordField("Password",validators=[DataRequired(),Length(min=4,max=10)])
submit =SubmitField("Log In")
app=Flask(__name__)
app.config["SECRET_KEY"]="secret"
@app.route("/")
def Home():
return "Hello World"
@app.route("/login",methods=["POST","GET"])
def Index():
form=LoginForm()
if form.validate_on_submit():
return redirect("Home")
return render_template("index.html",form=form)
if __name__ =="__main__":
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form</title>
</head>
<body>
<form action="" method="POST">
{{form.email.label()}}
{{form.email()}}
<br><br>
{{form.password.label()}}
{{form.password()}}
<br><br>
{{form.submit()}}
</form>
</body>
</html>
形式
{{form.email.label()}
{{form.email()}}
{{form.password.label()}}
{{form.password()}}
{{form.submit()}}
**请帮助我修复此错误。**问题一 您尝试重定向到“Home”,这是一个函数名,但没有路由 您可以重定向到“/”或使用Flask的“主页”url\u 问题二 您正在使用
Flask WTF
,一个表单框架,它会自动验证您提交的表单
它还可以防止所谓的CSRF安全问题
更多关于CSRF的信息
为了设置CSRF保护,您需要将以下代码添加到Python代码中:
from flask_wtf.csrf import CSRFProtect
...
csrf = CSRFProtect(app)
在实例化app
对象后,请确保在行中添加csrf
然后你需要更新你的HTML代码
将此添加到您的表单中
{{ form.csrf_token() }}
看来
<form action="" method="POST">
{{ form.csrf_token() }}
{{form.email.label()}}
{{form.email()}}
<br><br>
{{form.password.label()}}
{{form.password()}}
<br><br>
{{form.submit()}}
</form>
{{form.csrf_token()}}
{{form.email.label()}
{{form.email()}}
{{form.password.label()}}
{{form.password()}}
{{form.submit()}}
确保你已经根据这两个问题更新了你的代码,那么你的应用程序应该可以运行了——它在我的电脑上运行
如何解决此类问题?
我使用调试器来查找问题。虽然我不时使用烧瓶,但我没有看到您立即错过CSRF令牌
通常,我会启动一个调试器并逐步完成代码
这并不太复杂
我在Python爱尔兰会议上作了一次闪电般的演讲:
这仅仅是几分钟的时间,但它应该足够好地解释了基础知识,这样您就可以自己调试下一个问题了 问题一 您尝试重定向到“Home”,这是一个函数名,但没有路由 您可以重定向到“/”或使用Flask的“主页”url\u 问题二 您正在使用
Flask WTF
,一个表单框架,它会自动验证您提交的表单
它还可以防止所谓的CSRF安全问题
更多关于CSRF的信息
为了设置CSRF保护,您需要将以下代码添加到Python代码中:
from flask_wtf.csrf import CSRFProtect
...
csrf = CSRFProtect(app)
在实例化app
对象后,请确保在行中添加csrf
然后你需要更新你的HTML代码
将此添加到您的表单中
{{ form.csrf_token() }}
看来
<form action="" method="POST">
{{ form.csrf_token() }}
{{form.email.label()}}
{{form.email()}}
<br><br>
{{form.password.label()}}
{{form.password()}}
<br><br>
{{form.submit()}}
</form>
{{form.csrf_token()}}
{{form.email.label()}
{{form.email()}}
{{form.password.label()}}
{{form.password()}}
{{form.submit()}}
确保你已经根据这两个问题更新了你的代码,那么你的应用程序应该可以运行了——它在我的电脑上运行
如何解决此类问题?
我使用调试器来查找问题。虽然我不时使用烧瓶,但我没有看到您立即错过CSRF令牌
通常,我会启动一个调试器并逐步完成代码
这并不太复杂
我在Python爱尔兰会议上作了一次闪电般的演讲:
这仅仅是几分钟的时间,但它应该足够好地解释了基础知识,这样您就可以自己调试下一个问题了 您应该始终显示完整的错误消息。未找到错误,但无法重定向。您应该始终显示完整的错误消息。未找到错误,但无法重定向。我尝试了此操作,但不起作用。您的代码中还有一个问题,我将在一分钟内更新我的答案。现在我可以重定向到主页。,thanx为您提供了一个解释。我尝试了这个,但没有工作。您的代码中还有一个附加问题,我将在一分钟内更新我的答案。现在我可以重定向到主页,thanx为您提供解释。