405不允许使用的方法:所请求的URL不允许使用该方法

时间:2020-10-18 10:16:33

标签: python html forms flask

我一直在开发系统,但是最近我无法调试为什么出现此错误 不允许的方法 所请求的URL不允许使用该方法。 我一直在开发系统 我认为问题与发布功能不允许和被某些内容打断有关,请协助我。 代码:

python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def student():
    return render_template('index.html')

@app.route('/result',methods = ['POST', 'GET'])
def result():
    if request.method == 'POST':
        result = request.form['name']
        print(result)
        return "thank you for filling out this form"

if __name__ == '__main__':
    app.run(debug = True)
file_object = open('transferfile.txt', 'a+')
name = "Gabriel"
age = "12"
gender = "male"
file_object.write(name)
file_object.write(" ")
data = file_object.read(100)
file_object.write(age)
file_object.write(" ")
file_object.write(gender)
file_object.close()

html

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="style.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>venuefast</title>
</head>
<body>
    <form class="logo" action="." method="post">fastvenue<br>
        <hr>
        <input type ="text" name="name" placeholder="name">
        <br>
        <button type="submit" value="submit">Submit</button>
    </form> 
</body>
</html>

2 个答案:

答案 0 :(得分:0)

由于学生函数正在index.html中呈现表单,因此只有学生函数接受POST请求才有意义:

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/',methods = ['POST', 'GET'])
def student():
    if request.method == 'POST':
        name = request.form['name']
        return f"thank you for filling out this form {name}!"
    return render_template('index.html')


@app.route('/result')
def result():
    return 'this function does nothing yet'

if __name__ == '__main__':
    app.run(debug = True)

另一种选择,如果您打算将学生用于其他用途,则可以使结果函数呈现index.html,也可以使其接受POST请求:


from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def student():
    return 'this function does nothing yet'


@app.route('/result',methods = ['POST', 'GET'])
def result():
    if request.method == 'POST':
        name = request.form['name']
        return f"thank you for filling out this form {name}!"
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug = True)

答案 1 :(得分:0)

在HTML中尝试

<html lang="en">
<head>
    <link rel="stylesheet" href="style.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>venuefast</title>
</head>
<body>
    <form class="logo" action="/result" method="POST">
        <p>fastvenue</p>
        <br>
        <hr>
        <input type ="text" name="name" placeholder="name">
        <br>
        <button type="submit" value="submit">Submit</button>
    </form> 
</body>
</html>