【问题标题】:Link to style.css not working链接到 style.css 不起作用
【发布时间】:2015-12-11 11:37:38
【问题描述】:

我对网络编程和 Flask 还是很陌生。我正在尝试将 .css 文件链接到我的 base.html 文件的头部。我可以渲染网站的内容,但不能渲染 .css 文件中的样式。这是我的目录:

应用程序

模板

base.html

index.html

views.py

静态

style.css

在 base.html 的头部我写道:

<head>
    ...
    <link rel="stylesheet" type="text/css" href="/static/style.css">
</head>

我也试过这个:

<head>
    ...
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>

还有一些在我的目录周围复制 .css 文件的变体。网站上仍然没有格式化。

更多信息:通过运行views.py,我渲染了扩展base.html的index.html——我不知道这是否相关。

【问题讨论】:

  • 提示:启用调试以查看任何错误。尝试查看浏览器控制台以查看错误消息

标签: python html css flask


【解决方案1】:

请试试这个。它可能会有所帮助
在 .py 文件中

   from flask import Flask, request, send_from_directory

    # set the project root directory as the static folder, you can set others.
    app = Flask(__name__, static_url_path='')

    @app.route('/static/<path:path>')
    def send_css(path):
        return send_from_directory('static', path)

在 .html 文件中 **

<head>
    ...
    <link rel="stylesheet" type="text/css" href="../../../static/style.css">
</head>

**

编辑:

<head>
        ...
        <link rel="stylesheet" type="text/css" href="../../../static/style.css">
    </head>

【讨论】:

  • IOError: [Errno 2] 没有这样的文件或目录:u'C:\\xyz\\python_test2\\app\\static\\style.css'
  • @user1974056 工作??
  • 会不会是.css文件有问题?
  • 检查静态文件夹的权限
  • 授予静态文件夹内所有文件的权限
【解决方案2】:

我明白了!我的目录划分是错误的。我将静态文件夹放在 app 文件夹之外 - 我不知道为什么,但 Python 无法链接到 app 文件夹之外。谢谢大家的帮助!

【讨论】:

  • 尝试 :app = Flask(name, static_folder = os.path.join(os.pardir, 'static')) 如果它就在您的应用目录之外是否会从应用程序外部获取“静态”文件夹的路径。并确保您导入 os
  • 是的,目录结构错误。但您可以在 static_folder = 'c:/path/to/static' 或 python 'os' 模块 static_folder = os.join(os.pardir,'static') 中手动提供路径
【解决方案3】:

请试试这个,请给出static_folder 的路径,正确意味着它必须指向“静态”目录。

import os
from flask import Flask, request, send_from_directory

app = Flask(__name__, static_folder = 'path/to/folder/of/staticfiles')
#in your case it is 'static' directory.
@app.route('/static/<path:path>/<filename>')
@app.route('/static/<filename>')
def send_css(**kwargs):
    filename = kwargs.get('filename')
    path = kwargs.get('path')
    if path:
        return send_from_directory(os.path.join(static_folder,path), filename)
    else:
        return send_from_directory(static_folder, filename)

这还将从您的“静态”目录的任何子目录中读取 .css 文件。

只需将其保存在您的 index.html 中即可。

<head>
    ...
    <link rel="stylesheet" type="text/css" href="/static/style.css">
</head>

我希望你在 index.html 中扩展 base.html

并从烧瓶中渲染 index.html。

你知道你必须在static_folderapp = Flask(__name__, static_folder = 'path/to/folder/of/staticfiles') 中给出什么路径吗???? 您必须添加保存 .css 文件的目录的路径,这意味着您的“静态”文件夹的路径。

【讨论】:

  • 我尝试使用 '/static' 作为 static_path 和 {{ url_for('static', filename='style.css') }} - 不幸的是,它不起作用。
猜你喜欢
  • 2014-01-31
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2013-01-10
相关资源
最近更新 更多