为什么Flask应用程序不输入GET方法,但输入POST方法?

时间:2019-04-30 02:28:29

标签: python html flask

很抱歉,这必须是重复项,但是我没有找到任何帮助的方法,所以我想那一定是导入或语法问题?另外,我正在这里学习Python和HTML的速成课程,这是期末考试,所以请耐心等待。

我正在处理一项作业,该作业指定HTML页面必须使用具有GET方法的表单,并将其数据发送回原始位置“ assignment10.html”。该应用程序永远不会输入使用通过GET提交的表单的功能,而是在提交后重新加载页面(URL有查询字符串)。如果我使用POST作为形式和函数参数中的方法并使用request.form.get(),则应用程序将输入函数。如果有什么关系,我正在使用具有Ubuntu 64位的虚拟机

我进行了搜索,但是大多数答案都涉及json或ajax或某些其他软件,但是由于这是一项任务,因此我仅限于python文件和flask的模板文件夹。

我使用request.form.get()和request.args.get()在request对象上做了一些尝试,但是据我所知,这并不是障碍。我被困在这一点上,我需要知道我的错误是什么。

# assignment10.py
from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/assignment10.html')
def start():
    return render_template('Start.html')

@app.route('/assignment10.html', methods=['GET']) #Enters if 'POST' instead
def next():
    return "Entered next()"  # just to test function is entered
    fname = request.args.get('fname') #change to .form.get()
    lname = request.args.get('lname') # "                 "
    # render next template
<!-- Start.html -->
<!DOCTYPE html>
<html>
<head>
<title> Assignment 10 </title>
<script>
    function validate(){
        <!-- if fname && lname are not blank return true else false -->
     }
</script>
</head>

<body>
<!-- switch to method="POST" works -->
<form action = "assignment10.html" method="GET" onsubmit="return validate()">
    Your first name:
    <input type="text" name="fname" id="fname" value="First"><br>
    Your last name:
    <input type="text" name="lname" id="lname" value="Last"><br>

    <input type="submit" value="Submit">
</form>
<div id="msg"></div>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

@app.route('/assignment10.html')
def start():
    fname = request.args.get('fname') #change to .form.get()
    lname = request.args.get('lname') # "                 "
    print(fname, lname)
    return render_template('./Start.html')

您只需要一条路线即可。
第一个请求fnamelnameNone

为什么“ GET”不起作用?
@app.route('/assignment10.html', methods=['GET'])
@app.route('/assignment10.html')

两条路线相等。
由于@app.route的默认方法是['GET']