我似乎无法使用 Django 加载我的静态文件

I can't seem to get my static files to load using Django

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

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***

我想将文件放入 static*** 文件夹,而不是我的博客应用程序中的 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>

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

你应该运行这个命令

python manage.py collectstatic

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

来自 django 文档回复:STATICFILES_DIRS:

This setting defines the additional locations the staticfiles app will traverse if the FileSystemFinder finder is enabled, e.g. if you use the collectstatic or findstatic management command or use the static file serving view.

The default will find files stored in the STATICFILES_DIRS setting (using django.contrib.staticfiles.finders.FileSystemFinder) and in a static subdirectory of each app (using 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'),
)