不允许使用Flask 405方法

编程入门 行业动态 更新时间:2024-10-09 00:45:35
本文介绍了不允许使用Flask 405方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

单击"subimit"按钮后,我遇到了标题中的问题,当我将路由从应用程序分离到视图时,当我进入localhost:5000/register/时,问题开始显示,但是当我填写表格并单击提交"时我有问题405

after click subimit button I have problem like in title, the problem start showing when I separated routes from app to views, when I go to localhost:5000/register/ all is good but when I fill the form and click submit then I have problem 405

app.py

from flask import Flask,render_template,request,redirect,abort app = Flask(__name__) import views app.add_url_rule('/', view_func=views.index) app.add_url_rule('/login/', view_func=views.login) app.add_url_rule('/register/', view_func=views.register) if __name__ == '__main__': app.run(debug=True)

views.py

from flask import Flask,render_template,request,redirect,abort app = Flask(__name__) @app.route('/register/', methods=["GET","POST"]) def register(): if request.method == "POST": req = request.form email = req.get("email") password = req["password"] phonenumber = request.form["phonenumber"] if email == "" or password == "" or phonenumber=="": feedback="Please fill the form" alert = "fail" else: feedback="Account created!" alert = "good" return render_template('register.html',feedback=feedback,alert=alert) return render_template('register.html') @app.route('/') def index(): print("CIAO") return render_template('base.html')

和表格

<form class="" method="POST" action="{{ url_for('register') }}"> <input type="email" name="email" placeholder="Email"> <input type="password" name="password" placeholder="password" minlength="8"> <input type="tel" name="phonenumber" placeholder="Numer Telefonu" minlength="8" maxlength="9"> <input type="submit" name="submit"> </form>

推荐答案

Flask找不到/register/端点的POST方法处理程序.您正在混合 add_url_rule 和 @route .如果您想要可插入的视图,则只需要前者即可.

Flask is not finding the POST method handler for the /register/ endpoint. You're mixing add_url_rule and @route. You just need the former if you want pluggable views.

我建议在这里使用MethodView方法.每个模板都有一个单独的类,并在其中定义 get()和 post()方法.

I would recommend using the MethodView approach here. Have a separate class for each template and define the get() and post() methods within that.

app.py:

from flask import Flask from views import Register, Login, Index app = Flask(__name__) app.add_url_rule('/', view_func=Index.as_view("index")) app.add_url_rule('/login/', view_func=Login.as_view("login")) app.add_url_rule('/register/', view_func=Register.as_view("register")) if __name__ == '__main__': app.run(debug=True)

views.py:

from flask import Flask,render_template,request,redirect,abort from flask.views import MethodView class Register(MethodView): def get(self): return render_template('register.html') def post(self): req = request.form email = req.get("email") password = req["password"] phonenumber = request.form["phonenumber"] if email == "" or password == "" or phonenumber == "": feedback = "Please fill the form" alert = "fail" else: feedback = "Account created!" alert = "good" return render_template('register.html', feedback=feedback, alert=alert) class Index(MethodView): def get(self): print("CIAO") return render_template('index.html') class Login(MethodView): def get(self): return render_template('login.html')

更多推荐

不允许使用Flask 405方法

本文发布于:2023-10-10 18:30:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1479384.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不允许   方法   Flask

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!