簡體   English   中英

Flask 405 方法不允許

[英]Flask 405 Method Not Allowed

單擊提交按鈕后,我遇到了標題中的問題,當我將路由從應用程序分離到視圖時,問題開始出現405

應用程序.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)

視圖.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 如果你想要可插入的視圖,你只需要前者。

我建議在這里使用 MethodView 方法。 每個模板都有一個單獨的 class 並在其中定義get()post()方法。

應用程序.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)

視圖.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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM