所以这很尴尬.我有一个应用程序,我把它放在一起,Flask
现在它只是提供一个静态HTML页面,其中包含一些CSS和JS的链接.我无法在文档Flask
中找到返回静态文件的位置.是的,我可以使用,render_template
但我知道数据没有模板化.我曾经想过send_file
或者url_for
是对的,但是我无法让它们发挥作用.与此同时,我正在打开文件,阅读内容,并Response
使用适当的mimetype来装配:
import os.path
from flask import Flask, Response
app = Flask(__name__)
app.config.from_object(__name__)
def root_dir(): # pragma: no cover
return os.path.abspath(os.path.dirname(__file__))
def get_file(filename): # pragma: no cover
try:
src = os.path.join(root_dir(), filename)
# Figure out how flask returns static files
# Tried:
# - render_template
# - send_file
# This should not be so non-obvious
return open(src).read()
except IOError as exc:
return str(exc)
@app.route('/', methods=['GET'])
def metrics(): # pragma: …
Run Code Online (Sandbox Code Playgroud) 我做了一个非常简单的烧瓶应用程序,从.html文件中读取其内容.该应用程序除样式外工作.奇怪的是我的内联css代码工作但不是外部样式表.我检查了语法,它应该工作.烧瓶是否会以某种方式阻止读取.css文件?
可以在此处查看文件夹中的文件.这3个文件都在同一个文件夹中.
这是我的项目层次结构:
项目
这是我的HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='custom.css') }}"/>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的.py烧瓶文件:
from flask import Flask, render_template, redirect, json, url_for, request, abort
from pymongo import MongoClient
client = MongoClient()
db = client.web_zoo
app = Flask(__name__)
@app.route('/')
def index():
return render_template('home.html')
if __name__ == "__main__":
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我的CSS文件:
body {
color: green;
}
h1 {
color: orange;
}
Run Code Online (Sandbox Code Playgroud)
HTML和.py文件工作正常,HTML呈现并显示在页面上.然而,CSS不会改变.它只是以普通的黑色文字显示.
注意:所有这些导入都在那里,因为我正在做其他事情.我剥夺了其他一切,仍然有这个问题.
我可以链接bootstrap到它,CSS工作,但不是我自己的CSS文件.
我查看并尝试了以下解决方案: