为什么Flask app不输入GET方法而输入POST方法?

2024-09-30 01:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我很抱歉,这必须是一个重复,但我还没有找到任何有帮助的,所以我想这一定是一个导入或语法问题?另外,我在这里学习Python和HTML的速成课程,现在是期末考试周,请耐心听我说。你知道吗

我正在做一个家庭作业,指定一个HTML页面必须使用一个带有GET方法的表单,并将其数据发送回原始位置“assignment10.HTML”。应用程序从不进入使用GET提交的表单的函数,只是在提交后重新加载页面(url有查询字符串)。如果我在表单和函数参数中使用POST作为方法并使用请求.form.get(). 如果有关系的话,我使用的是一个带有ubuntu64位的虚拟机

我四处搜索过,但大多数答案都涉及json、ajax或其他软件,但由于这是一个任务,我仅限于python文件和flask的templates文件夹。你知道吗

我已经使用请求.form.get()和请求.args.get()但据我所知,这不是这里的障碍。我被困在这一点上,我需要知道我的错误是什么。你知道吗

# 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>

Tags: nameform表单getreturnhtmlargstemplate
1条回答
网友
1楼 · 发布于 2024-09-30 01:35:29
@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

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

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

相关问题 更多 >

    热门问题