Zac*_*ack 80 html css python templates flask
我正在渲染一个模板,我试图用外部样式表设置样式.文件结构如下.
/app
- app_runner.py
/services
- app.py
/templates
- mainpage.html
/styles
- mainpage.css
Run Code Online (Sandbox Code Playgroud)
mainpage.html看起来像这样
<html>
<head>
<link rel= "stylesheet" type= "text/css" href= "../styles/mainpage.css">
</head>
<body>
<!-- content -->
Run Code Online (Sandbox Code Playgroud)
我的风格都没有应用.是否与html是我正在渲染的模板这一事实有关?python看起来像这样.
return render_template("mainpage.html", variables..)
Run Code Online (Sandbox Code Playgroud)
我知道这很有效,因为我仍然可以渲染模板.但是,当我试图将样式代码从html的"head"标签中的"样式"块移动到外部文件时,所有样式都消失了,留下了一个简单的html页面.有人看到我的文件结构有任何错误吗?
cod*_*eek 169
你需要有一个'静态'文件夹设置(对于css/js文件),除非你在Flask初始化期间专门覆盖它.我假设你没有覆盖它.
你的css目录结构应该是这样的:
/app
- app_runner.py
/services
- app.py
/templates
- mainpage.html
/static
/styles
- mainpage.css
Run Code Online (Sandbox Code Playgroud)
请注意,您的/ styles目录应位于/ static下
然后,这样做
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/mainpage.css') }}">
Run Code Online (Sandbox Code Playgroud)
Flask现在将在static/styles/mainpage.css下查找css文件
njz*_*zk2 14
在jinja2模板(烧瓶使用)中,使用
href="{{ url_for('static', filename='mainpage.css')}}"
Run Code Online (Sandbox Code Playgroud)
该static
文件通常是在static
文件夹中,不过,除非进行其他配置.
小智 14
按照codegeek提供的解决方案后仍然有问题:
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/mainpage.css') }}">
?
在谷歌浏览器中按下重新加载按钮 (F5) 不会重新加载静态文件。如果您遵循了已接受的解决方案,但仍然没有看到您对 CSS 所做的更改,请按ctrl + shift + R
忽略缓存文件并重新加载静态文件。
在Firefox 中按下重新加载按钮似乎可以重新加载静态文件。
在Edge 中,按下刷新按钮不会重新加载静态文件。按ctrl + shift + R
应该忽略缓存文件并重新加载静态文件。但是这在我的电脑上不起作用。
<link
rel= "stylesheet"
type= "text/css"
href= "{{ url_for('static',filename='name of css file') }}"
>
Run Code Online (Sandbox Code Playgroud)
如果您已像上面那样链接了 css 但它不起作用,那么您可以执行以下操作:-
- 铬=>
ctrl + shift + R
- 边缘=>
ctrl + shift + R
- 火狐=>
ctrl + shift + R
我已经阅读了多个线程,但没有一个解决了人们所描述的问题,我也遇到过。
我什至试图摆脱 conda 并使用 pip,升级到 python 3.7,我尝试了所有提出的编码,但没有一个修复。
这就是为什么(问题):
默认情况下,python/flask 在文件夹结构中搜索静态和模板,例如:
/Users/username/folder_one/folder_two/ProjectName/src/app_name/<static>
and
/Users/username/folder_one/folder_two/ProjectName/src/app_name/<template>
Run Code Online (Sandbox Code Playgroud)
您可以使用 Pycharm(或其他任何东西)上的调试器自行验证并检查应用程序上的值(app = Flask( name ))并搜索 teamplate_folder 和 static_folder
为了解决这个问题,您必须在创建应用程序时指定如下值:
TEMPLATE_DIR = os.path.abspath('../templates')
STATIC_DIR = os.path.abspath('../static')
# app = Flask(__name__) # to make the app run without any
app = Flask(__name__, template_folder=TEMPLATE_DIR, static_folder=STATIC_DIR)
Run Code Online (Sandbox Code Playgroud)
路径 TEMPLATE_DIR 和 STATIC_DIR 取决于文件应用程序所在的位置。就我而言,请参见图片,它位于 src 下的文件夹中。
您可以根据需要更改模板和静态文件夹并在应用程序上注册= Flask ...
事实上,我在处理文件夹时已经开始遇到这个问题,有时有时没有。这可以一劳永逸地解决问题
html 代码如下所示:
<link href="{{ url_for('static', filename='libraries/css/bootstrap.css') }}" rel="stylesheet" type="text/css" >
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
80261 次 |
最近记录: |