【问题标题】:Flask redirect stops working after one try?一次尝试后烧瓶重定向停止工作?
【发布时间】:2017-12-09 13:42:00
【问题描述】:

当我使用 python test.py 运行烧瓶,然后在浏览器中导航到 http://localhost:5000 时,我希望终端能够读取:

test-1 test-2 test-3

这三个打印语句仅在第一次运行test.py 时出现。之后,终端只会显示:

test-1 test-2

由于某种原因,在初始运行后没有重定向到第二页。是否发生了某种奇怪的缓存废话?有人可以解释发生了什么吗?

from flask import Flask, redirect, url_for, send_from_directory
app = Flask(__name__)

@app.route('/')
def home():

    print('test-2')
    return redirect(url_for('page2'))

@app.route('/secondPage')
def page2():

    print('test-3')
    return send_from_directory('.', 'test_dashboard_4.html')

if __name__ == '__main__':
    print('test-1')
    app.run(debug=True)

【问题讨论】:

  • 你为什么没有app.run()
  • 所以这段代码显然不会运行。请发布一个工作示例。
  • 好收获。我添加了app.run()sys.exit() 只是为了终止程序,也解决了这个问题。
  • 不确定添加 app.run 后编号是否更改。当我运行它时,我看到了 test-1、test-2、test-3。然后按预期进行 test-2、test-3。
  • @bren,你是否在两次运行之间重新启动了烧瓶脚本?

标签: python redirect flask url-for


【解决方案1】:

我发现到处都是,我发现这个问题很老,还没有答案。
所以我会成为可以帮助你的人。

使用render_template 并将所有的html 放到模板文件夹中。像这样的

import flask

app = flask.Flask("My life sucks")

@app.route('/')
def index():
    return flask.render_templates('your html page here.')

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

另一件事,您不能将 javascript 放在 html 所在的同一目录中。 而是将其放在静态文件夹中,并将静态添加到您导入 javascript 之类的位置。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<body>
    <h1>
        Hello world!
    </h1>
    <script src="static/hi.js"></script>
</body>
</html>

如果你想看的话,这是 javascript 文件

console.log("I get imported!");
document.body.innerHTML += '<p>:D</p>'

这是树

D:.
│   app.py
│
├───static
│       hi.js
│
└───templates
        index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2016-09-28
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多