理解为什么请求没有;我不在弗拉斯克工作

Understanding Why Request Doesn't work in Flask

本文关键字:拉斯克 工作 为什么 请求      更新时间:2023-09-26

我已经建立了一个小烧瓶服务器和相关的网站。我可以使用flask服务器成功地在本地托管页面,此外,我还可以使用代码return str(request.form)查看我点击按钮后放置在文本字段中的文本。

现在,我在代码中写道,单击本地主机上第一个html页面的按钮后,会发现它们被重定向到另一个代码几乎相同的html页面。然而,出于某种原因:

return str(request.form)

不再显示我输入到网站的值。我一直在试着调试原因,并最终得出结论,当多次调用时,flask请求对象的行为不一样。除此之外,我不知道如何修复它。

这是:(Flask Python代码:)

from flask import Flask
from flask import request
from flask import render_template
from flask import abort, redirect, url_for
import pymongo
from pymongo import MongoClient
import smtplib
from email.mime.text import MIMEText

app = Flask(__name__)
@app.route('/')
def my_form():
    return render_template('minifile.html')
@app.route('/', methods=['POST'])
def my_form_post():
    return redirect(url_for('my_form2'))
@app.route('/a/')
def my_form2():
    return render_template('minifile2.html')
@app.route('/a/', methods=['POST'])
def my_form2_post():
    return str(request.form)
if __name__ == '__main__':
    app.run(debug=True)

HTML for minifile.HTML

<!DOCTYPE html>
<head>
</head>
<body>
    <form action="'" method='POST'>
        <input type="text" name="firstname" value="" style="width: 210px;"/>
         <input type="Submit" name="" value="submit" style="width: 210px; background-color: black; color: white; font-weight: bold; padding-top: 3px; padding-bottom: 3px;" />
    </form>
</body>


</html>

HTML for minifile2.HTML

<!DOCTYPE html>
<head>
</head>
<body>
    <form action="'" method='POST'>
        <input type="text" name="firstname" value="" style="width: 210px;"/>
         <input type="Submit" name="" value="submit" style="width: 210px; background-color: black; color: white; font-weight: bold; padding-top: 3px; padding-bottom: 3px;" />
    </form>
    This is text
</body>

</html>

您的第二个表单返回到根路径处理程序/:

<form action="'" method='POST'>

你可以在Flask输出到你的控制台上看到这一点:

127.0.0.1 - - [08/Feb/2015 13:08:16] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [08/Feb/2015 13:08:16] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [08/Feb/2015 13:08:21] "POST / HTTP/1.1" 302 -
127.0.0.1 - - [08/Feb/2015 13:08:21] "GET /a/ HTTP/1.1" 200 -
127.0.0.1 - - [08/Feb/2015 13:08:26] "POST / HTTP/1.1" 302 -
127.0.0.1 - - [08/Feb/2015 13:08:26] "GET /a/ HTTP/1.1" 200 -

在张贴由/提供的第一个表单时,浏览器被重定向到/a/(向POST提供302重定向,然后是对第二个表单的200响应)。POST该表单返回到/。您也可以使用浏览器开发工具来观察网络条目。

与其硬编码操作URL,不如使用url_for并将目标命名为:

<form action="{{ url_for('my_form2_post') }}" method='POST'>