【问题标题】:How to use static content in django outside the static folder如何在静态文件夹外使用django中的静态内容
【发布时间】:2016-03-20 03:05:16
【问题描述】:

我有一个项目,里面有一个应用程序,我希望该应用程序能够成为一个可重用的包,我有一个模板并在其中定义了一些 CSS 样式,但是当我尝试应用正文背景图像时,我无法显示。我不想将此图像放在我的全局静态文件夹中,因为此图像不适用于项目,仅适用于此应用程序。我的项目结构如下:

login.html 是我的模板,background.jpg 是我的图像。我的 CSS 代码是:

body{
        background-image: url('templates/background.jpg');
    }

但这不起作用。

【问题讨论】:

    标签: html css django django-templates


    【解决方案1】:

    1、文件存放位置

    引用django docs (step 4):

    将静态文件存储在应用中名为 static 的文件夹中

    2、清单

    然后,阅读Packaging your app step 6 以了解如何编写清单。例如:

    django-polls/MANIFEST.in

    include LICENSE
    include README.rst
    recursive-include polls/static *
    

    3、使用静态

    记得在你的模板上使用static

    {% load static from staticfiles %}
    body{
            background-image: url( '{% static "templates/background.jpg%}');
        }
    

    【讨论】:

    • 第 2 点仅适用于您想要发布应用程序的情况。项目应用不需要。
    • 另外,您应该学习如何使用 ststic 文件部署项目。懂了就很容易了。
    【解决方案2】:

    您可以在应用程序“app-package”中创建静态文件夹,文件夹名称应为“静态”。每次 django 看到一个静态文件时,它都会在所有应用程序的静态文件夹中搜索它。 现在您应该在编写模板之前加载所有静态文件。

    登录.html

    {% load staticfiles %}
    <html>
    <head>
    <style>
    body  {
        background-image: url('static/background.jpg');
    }
    </style>
    </head>
    <body>
    </body>
    </html>
    

    图像应该保存在静态文件夹中,您的项目设置应该知道这一点。您对静态文件的设置将如下所示。

    【讨论】:

    • 小心,这似乎更容易,但这是一次旅行。您应该使用 static 模板命令和 never 硬编码的 url。
    • 另外,ststic 文件的硬编码 url 是部署时的一个大问题。
    猜你喜欢
    • 2019-03-05
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多