Python 将信息从一个路由传递到另一个路由:忽略重定向请求
我无法让flask将信息发送到另一个要提交的路径。将来,这将用于需要在注销用户可以查看的页面上登录的操作 我使用的是python 3.6和flask 1.0.2。我尝试过使用validate_on_submit()重定向,弄乱了代码的其他各个部分,还尝试过链接到html中的第二个路由Python 将信息从一个路由传递到另一个路由:忽略重定向请求,python,redirect,flask,flask-wtforms,url-for,Python,Redirect,Flask,Flask Wtforms,Url For,我无法让flask将信息发送到另一个要提交的路径。将来,这将用于需要在注销用户可以查看的页面上登录的操作 我使用的是python 3.6和flask 1.0.2。我尝试过使用validate_on_submit()重定向,弄乱了代码的其他各个部分,还尝试过链接到html中的第二个路由 from flask import Flask, render_template, url_for, redirect from flask_wtf import FlaskForm from wtforms im
from flask import Flask, render_template, url_for, redirect
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'b317a06ad972917a84be4c6c14c64882'
class PostForm(FlaskForm):
content = StringField('Content')
submit = SubmitField('form submit')
@app.route("/", methods=['GET', 'POST'])
@app.route("/home", methods=['GET', 'POST'])
def home():
form = PostForm()
if form.validate_on_submit():
content = form.content.data
redirect(url_for('submit', content=content))
print(url_for('submit', content=content))
return render_template('example.html', form=form)
@app.route("/submit/<string:content>", methods=['GET', 'POST'])
def submit(content):
print('content')
print(content)
return redirect(url_for('example'))
if __name__ == "__main__":
app.run(debug=True)
从烧瓶导入烧瓶,呈现模板,url,重定向
来自flask_wtf进口FlaskForm
从wtforms导入StringField、SubmitField
app=烧瓶(名称)
app.config['SECRET_KEY']=“b317a06ad972917a84be4c6c14c64882”
班级PostForm(烧瓶表格):
content=StringField('content')
submit=SubmitField('表单提交')
@app.route(“/”,方法=['GET','POST'])
@app.route(“/home”,方法=['GET','POST']))
def home():
form=PostForm()
if form.validate_on_submit():
content=form.content.data
重定向(url_用于('submit',content=content))
打印(url_用于('submit',content=content))
返回呈现模板('example.html',form=form)
@app.route(“/submit/”,方法=['GET','POST'])
def提交(内容):
打印('内容')
打印(内容)
返回重定向(url_表示('example'))
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(debug=True)
在本例中,我试图在重定向时在服务器端打印表单数据。假设这是可能的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="content-section">
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">{{ legend }}</legend>
<div class="form-group">
{{ form.content.label(class="form-control-label") }}
{% if form.content.errors %}
{{ form.content(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.content.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.content(class="form-control form-control-lg") }}
{% endif %}
</div>
</fieldset>
<div class="form-group">
<form action="{{ url_for('submit', content=content) }}" method="POST">
<input class="btn btn-danger" type="submit" value="html submit">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
</body>
</html>
标题
{{form.hidden_tag()}}
{{图例}}
{{form.content.label(class=“form control label”)}
{%if form.content.errors%}
{{form.content(class=“form control form control lg无效”)}
{form.content.errors%中的错误为%s}
{{error}}
{%endfor%}
{%else%}
{{form.content(class=“form control form control lg”)}
{%endif%}
{{form.submit(class=“btn btn outline info”)}
这两种方法都会刷新页面,而不做任何其他操作。问题是在重定向时,任何地方都不会打印任何内容
在这张图片中,您可以看到打印(url_for('submit',content=content))输出。我想用打印(content)做一件类似的事情,但代码从来没有做到这一点。
您不会返回对视图的任何响应
return redirect(url_for())
您必须将路由装饰器的函数名传递给url\u for()
以生成url,而不是模板名
例如:
@app.route('/')
def index():
return render_template('index.html')
# redirect `/somewhere/` to `/`
@app.route('/somewhere/')
return redirect(url_for('index')
将内容打印到烧瓶开发控制台
import sys
print('This will be printed to the console', file=sys.stdout)
在您的情况下,您可以传递如下数据:
import sys
@app.route("/", methods=['GET', 'POST'])
@app.route("/home", methods=['GET', 'POST'])
def home():
form = PostForm()
if form.validate_on_submit():
content = form.content.data
print(content, file=sys.stdout)
return redirect(url_for('submit', content=content))
return render_template('example.html', form=form)
对不起,我的问题中缺少信息。在本例中,我试图在重定向时在服务器端打印表单数据。问题是,在重定向时,任何地方都不会打印任何内容。您希望将结果输出到控制台吗?我想是的,是的。这并没有达到我所认为的效果。我添加了所需输出的屏幕截图。我再次更新了答案。我现在在手机上,格式化时无法做得更好更快。