【问题标题】:I can't seem to get my static files to load using Django我似乎无法使用 Django 加载我的静态文件
【发布时间】:2015-11-09 06:39:35
【问题描述】:

我似乎一辈子都无法让我的静态文件工作......我一直在阅读这里的文档:

https://docs.djangoproject.com/en/1.8/ref/settings/#static-root

我得出的结论是我需要以下设置

STATIC_ROOT
STATIC_URL
STATICFILES_DIR

我相信STATIC_ROOT 是如果我想使用./manage.py collectstatic 并将它们全部放在一个文件夹中进行部署,所以我不需要它

目前我的 STATIC_URL 是

STATIC_URL = '/static/'

我不确定我的STATICFILES_DIRS 应该设置为什么。我已经尝试了所有我能想到的组合。

STATICFILES_DIRS = (
    "E:\PyProjects\elsablog\static"
)

我目前已对其进行了硬编码,但仍然无法正常工作!

 elsablog
      blog
           static
                blog
      elsablog
      static***

我想将文件放入我的博客应用程序中的静态文件夹,而不是静态文件夹。 (我的bootstrap,js,css,所以希望能全局访问)

这是我的 index.html

{% extends "base.html" %}

{% block content %}
<SCRIPT SRC=/static/js/test.js"% ></SCRIPT>
<ul>
{% for topic in topic_list %}

    <li>{{ topic.topic_text}}</li>
    <ul>

    {% for subtopic in subtopic_list %}
        {% if subtopic.topic.topic_text == topic.topic_text%}
            <li>{{ subtopic.subtopic_text}}</a></li>
        {% endif %}

        <ul>
        {% for question in question_list %}
            {% if question.topic.topic_text == topic.topic_text and question.subtopic.subtopic_text == subtopic.subtopic_text%}
                <li><a href="/blog/{{ question.id }}/">{{ question.question_text }}</a></li>
            {% endif %}
        {% endfor %}
        </ul>
    {% endfor %}
    </ul>

{% endfor %}
</ul>

<A HREF="javascript:a_message()">Click for eea message..</A>

{% endblock content %}

还有我的 base.html

<!DOCTYPE html>

{% load staticfiles %}

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Esla's Blog</title>
    <link rel="stylesheet" href="{% static "css/prism.css" %}">
    <script src="{% static "js/prism.js" %}"></script>
    <SCRIPT SRC=/static/js/test.js"% ></SCRIPT>

</head>
<body>
    {% block content %}
    {% endblock %}


<A HREF="javascript:a_message()">Click for a message..</A>
</body>
</html>

非常感谢您的帮助,谢谢大家~!

【问题讨论】:

    标签: css django static django-staticfiles


    【解决方案1】:

    来自 django 文档回复:STATICFILES_DIRS:

    此设置定义了静态文件应用程序将使用的其他位置 如果启用了 FileSystemFinder 查找器,则遍历,例如如果你使用 collectstatic 或 findstatic 管理命令或使用 static 文件服务视图。

    默认会查找存储在 STATICFILES_DIRS 设置中的文件 (使用 django.contrib.staticfiles.finders.FileSystemFinder)并在 每个应用程序的静态子目录(使用 django.contrib.staticfiles.finders.AppDirectoriesFinder)。

    无论哪种方式,请在您的设置文件中尝试这个,而不是您当前的设置:

    PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    STATICFILES_DIRS = (
        os.path.join(PROJECT_ROOT, 'static'),
    )
    

    【讨论】:

    • 那行不通! =(奇怪的是......在我的控制台中,我看到了这个[16/Aug/2015 11:51:35]"GET /static/css/prism.css HTTP/1.1" 404 1652 [16/Aug/2015 11:51:35]"GET /static/js/prism.js HTTP/1.1" 404 1646 [16/Aug/2015 11:51:35]"GET /static/js/test.js HTTP/1.1" 404 1643
    • 好的,让我们尝试修复它。 DEBUG = True 设置有什么变化吗?
    • 我一直在运行它,并将调试设置为 true。
    • 哇,我不知道发生了什么,但我重新运行了服务器,它与你的代码一起工作!谢谢!
    【解决方案2】:

    你应该运行这个命令

    python manage.py collectstatic
    

    有关如何提供静态内容的更多详细信息,请阅读django docs here

    【讨论】:

      猜你喜欢
      • 2018-08-31
      • 2020-04-16
      • 2019-03-24
      • 2014-07-12
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      相关资源
      最近更新 更多