-1

我想要做的是,只需将 HTML+css+js 文件作为静态页面发送到某些路由上,例如:

@app.route('/', methods=[GET])
def index():
  return <html+css+js>

特别是我想远离模板,并依靠连接到烧瓶应用程序的其他路由的 ajax/websocket 来获取 JSON 对象并更新网页。我也很难在 html 中链接 css 和 js 文件。该url_for方法似乎完全依赖模板系统,在我的情况下似乎无法正常工作。

例如。

Directory Structure

  • 重定向服务器(应用主文件夹)
    • 静止的
    • 索引.html
    • main.js
    • venv(python3 virtualenv)
    • main.py(烧瓶应用程序)

main.py

from flask import Flask, redirect
from flask import render_template

app = Flask(__name__)

@app.route('/')
def index():
    return redirect("/abc/xyz")

@app.route('/abc/xyz')
def abc():
    return app.send_static_file("index.html")

app.run(debug=True)

index.html

<!DOCTYPE html>

<html>
    <head>
        <title>Hello</title>
        <script type="text/javascript" src="{{ url_for('static', filename='main.js') }}"></script>
    </head>
    <body>
        <h1>Welcome!</h1>
    </body>
</html>

我得到的错误如下

127.0.0.1 - - [28/Oct/2015 14:07:02] "GET /abc/%7B%7B%20url_for('static',%20filename='main.js')%20%7D%7D HTTP/1.1" 404 -

HTML 返回正常,但找不到js文件

4

2 回答 2

0

如果不依赖模板,我无法找到它的工作原理。

以下对我有用

重组我的目录如下

  • 重定向服务器
    • 静止的
      • main.js
    • 模板
      • 索引.html
    • 主文件

main.py

from flask import Flask, redirect
from flask import render_template

app = Flask(__name__)

@app.route('/')
def index():
    return redirect("/abc/xyz")

@app.route('/abc/xyz')
def abc():
    return render_template("index.html")

app.run(debug=True)

index.html

<!DOCTYPE html>

<html>
    <head>
        <title>Hello</title>
        <script type="text/javascript" src="{{ url_for('static', filename='main.js') }}"></script>
    </head>
    <body>
        <h1>Welcome!</h1>
    </body>
</html>
于 2015-10-29T08:05:35.933 回答
0

您将模板作为静态文件发送。

app.send_static_file("index.html")

更好地渲染它,如文档中所示:)

于 2015-10-28T10:31:29.113 回答