Django找不到应用程序的静态文件

时间:2014-11-03 10:13:36

标签: python django

我在my_site/my_app/static/my_app/jsmy_site/my_app/static/my_app/css中放置了静态文件。出于某种原因,下面的代码不会产生任何输出,这意味着它无法找到静态文件:

#my_app/templates/my_app/base.html

{% load staticfiles %}

这是setting.py

STATIC_URL = '/static/'


STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'my_app', 'static', 'my_app',).replace('\\','/'),
) 

STATIC_ROOT = ''

为什么?

3 个答案:

答案 0 :(得分:2)

django.contrib.staticfiles添加到INSTALLED_APPS中的settings.py

STATICFILES_FINDERS删除STATICFILES_DIRSSTATIC_ROOTsettings.py

将您的base.html更改为以下内容:

{% load staticfiles %}
<!DOCTYPE html>
<html lang="fa">
    <head>
        <script type="text/javascript" src="{% static 'my_app/js/app.js' %}"></script>
        <title>{{ title }}</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
</html>

答案 1 :(得分:0)

在遇到以下变化后,我遇到了同样的问题。

在HTML页面中:

{% load static %}  ## loads the static folder and images inside it. 
<div id='button-holder'><img src="{% static "glass.png" %}" alt="Hi!" /></div> ## for images 
                              src="{% static 'my_app/js/app.js' %} ## for scripts.

在urls.py

urlpatterns = patterns('',...
........
 )+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在这个运行命令之后,@丹尼尔罗斯曼提到了python manage.py collectstaticfindstatic命令可以帮助您显示找到的文件。 示例

python manage.py findstatic css/base.css admin/js/core.js

您可以找到关于它的帮助here

答案 2 :(得分:-1)

您应该运行manage.py collectstatic将应用级静态文件复制到中央静态目录。