"Method Not Allowed" Flask 提交表单数据后出错

"Method Not Allowed" error in Flask after submitting form data

在我的表单中单击“提交”后,我收到“不允许的方法 请求的 URL."

不允许使用该方法

所需代码如下

hello.py

@app.route('/')
def home():
    return render_template("home.html")

@app.route('/register', methods=["GET", "POST"])
def register():
    
    
    if request.method == "POST":
#        data = {}
        name = request.form['name']
        place = request.form['place']
        descr = request.form['descr']
        email = request.form['email']
        collection.insert_one({'name': name, 'place': place, 'email': email, 'descr': descr})
           
    return render_template("register.html")

register.html

<form action="." method="post">
                      
            <h1> COMPLAINT FORM </h1>
                              
            <input class="box" type="text" name="name" id="name" 
            placeholder="Name"  required /><br>

            <input class="box" type="place" name="place" id="place" 
            placeholder="Place" required /><br>
                              
            <input class="box" type="email" name="email" id="email" 
            placeholder="E-Mail " required /><br>

            <input class="box" type="text" name="descr" id="descr" 
            placeholder="Enter Description " required /><br>
                          
            <input type="submit" id="submitDetails"  
            name="submitDetails" value="Submit" /><br>
                      
            </form>

我还尝试在 form action="." 中包含重定向 link,但它会引发相同的错误。

问题在于您希望从 /register 端点重定向到主页的方式。你想 post 东西到家里所以代码应该如下:

hello.py

@app.route('/', methods=["GET", "POST"])
def home():
    return render_template("home.html")

@app.route('/register', methods=["GET", "POST"])
def register():
    
    
    if request.method == "POST":
#        data = {}
        name = request.form['name']
        place = request.form['place']
        descr = request.form['descr']
        email = request.form['email']
        collection.insert_one({'name': name, 'place': place, 'email': email, 'descr': descr})
           
    
    return render_template("register.html")

register.html

<form action="/" method="post">
                      
            <h1> COMPLAINT FORM </h1>
                              
            <input class="box" type="text" name="name" id="name" 
            placeholder="Name"  required /><br>

            <input class="box" type="place" name="place" id="place" 
            placeholder="Place" required /><br>
                              
            <input class="box" type="email" name="email" id="email" 
            placeholder="E-Mail " required /><br>

            <input class="box" type="text" name="descr" id="descr" 
            placeholder="Enter Description " required /><br>
                          
            <input type="submit" id="submitDetails"  
            name="submitDetails" value="Submit" /><br>
                      
            </form>