gpt4 book ai didi

python - Flask,在 View 之间传递用户输入的数据

转载 作者:行者123 更新时间:2023-12-01 06:29:04 26 4
gpt4 key购买 nike

跨 View 传输变量时出现问题 我尝试使用 session ,但无法使连接正常工作。假设我有两个页面,一个 homepage2。我有一个 Flask 应用程序,它将从 home 获取用户输入并在 page2 上打印输入。

<小时/>

例如,如果您启动我的应用程序,您将看到此为主页:

Home Page

  • 这部分工作正常,我可以输入一个值。
<小时/>

接下来我想要发生的是,在您单击“提交”后,会生成 page2,显示刚刚输入的内容:

page2

  • home 上输入的任何字符串值都应该显示在突出显示的部分中。
<小时/>

我有以下 app.py 文件:

from flask import Flask, render_template, request, session

app = Flask(__name__)


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

stringval = ''
if request.method == 'POST' and 'stringval' in request.form:
stringval = request.form.get('stringval')
session["stringvalue_topass"] = stringval
return render_template('page2.html', stringval = stringval)

return render_template("home.html")


@app.route('/page2', methods=['GET', 'POST'])
def page2():
stringvalue_get = session.get('stringvalue_topass')
return render_template('page2.html', stringvalue_get = stringvalue_get)




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

以下 home.html:

<!doctype html>

<h1>Enter Value </h1>
<div class="main">
<form class="pure-form" method="POST" action="/page2">
stringval:<br>
<input type="text" name="stringval"><br>
<button type="submit" class="pure-button pure-button-primary" value="Submit">Submit!</button>
</form>
</div>

</body>

以及下面的page2.html

<!doctype html>

<h1>You have selected </h1>

<div class="main">
{% if stringvalue_get %}
<pre>

{% print(stringvalue_get) %}
</pre>
{% endif %}

</div>

</body>

最佳答案

好的,这里有一些问题。首先,将 home.html 中表单的 action 属性设置为 "/page2"。这意味着提交表单时,POST 请求将发送到 /page2 端点,而不是发送到 /home 端点,您在其中编写了用于处理表单提交。我们可以通过删除 action 属性来解决此问题,因为这意味着表单将发布到加载它的端点 - 在本例中是 /home

其次,如果没有设置 key 来加密 session ,则无法使用 Flask session 。这可以通过为 app.secret_key 分配一个值来完成,如下所示:

app = Flask(__name__)
app.secret_key = b"my_secret_key"

最后,不要像这样将字符串传递给模板:render_template('page2.html', stringval = stringval),(另请注意,这应该是 stringval_get = stringval),您已经可以直接从模板访问 session 对象。因此,总而言之,我们可以将您的应用程序代码更改为:

app.py:

from flask import Flask, render_template, request, session

app = Flask(__name__)
app.secret_key = b"my_secret_key"

@app.route('/', methods=['GET', 'POST'])
def home():
if request.method == 'POST' and 'stringval' in request.form:
session["stringvalue_topass"] = request.form.get('stringval')
return render_template('page2.html')
return render_template("home.html")


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

您的模板:

home.html:

<!doctype html>

<h1>Enter Value </h1>
<div class="main">
<form class="pure-form" method="POST">
stringval:<br>
<input type="text" name="stringval"><br>
<button type="submit" class="pure-button pure-button-primary" value="Submit">Submit!</button>
</form>
</div>

</body>

page2.html:

<!doctype html>

<h1>You have selected </h1>

<div class="main">
{% if 'stringvalue_topass' in session %}
<pre>

{% print(session["stringvalue_topass"]) %}
</pre>
{% endif %}

</div>

</body>

关于python - Flask,在 View 之间传递用户输入的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com