在阅读this问题和文档here后,我编写了一个应该返回静态资源(html,css和javascript文件)的函数:
server.py
import json
import random
import string
import re
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from app import app
from flask import Flask, jsonify, request, render_template
from database_helpers import query_db, insert_db
from werkzeug.security import generate_password_hash, check_password_hash
# set the project root directory as the static folder, you can set others.
# cwd = os.path.dirname(os.path.realpath(__file__))
app = Flask(__name__, static_url_path='')
# url_for('static', filename='style.css')
@app.route('/')
def index():
# This works
# return "Test test test."
# This doesn't
return app.send_static_file('welcome.html')
项目布局目录是:
静态路径必须是绝对路径还是相对于当前工作目录?我在做窗户。这是否意味着应将斜杠反斜杠添加到 server.py 中的所有路径?
每个请求都会收到404响应。
答案 0 :(得分:0)
注释掉定义静态URL路径的行修复了问题:
<强> server.py 强>
import json
import random
import string
import re
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from app import app
from flask import Flask, jsonify, request, render_template
from database_helpers import query_db, insert_db
from werkzeug.security import generate_password_hash, check_password_hash
@app.route('/')
def index():
# This works
# return "Test test test."
# This doesn't
return app.send_static_file('welcome.html')
但是,不会发送样式和图像。
为了发送html文件所需的静态内容,必须相对于根路径引用它。例如,如果 index.html 有图片:
<img src="favicon.ico"/>
然后必须更改其源代码,以便指向 favicon.ico 所在的静态目录:
<img src="static/favicon.ico"/>