Django静态文件(css)无法正常工作

时间:2016-03-09 15:15:59

标签: python css django

由于某种原因,我似乎无法包含我的bootstrap css文件。我对Python和Django很陌生,所以我肯定做错了。

  • Django 1.9.2

阅读"静态文件"上的official Django explanation后管理我绝对不聪明:(。这是我的项目文件夹层次结构:

/projectname/
    /appname/
        /static/
        |   /appname/
        |        /css/
        |        |    bootstrap.min.css
        |        |    custom.css
        |        /img/
        |        /js/
        |
        /templates/
            /includes/
                head.html
                footer.html
            index.html
            base.html

我从基础开始,所以我忽略了head.html并尝试了base.html,如此:

<title>{% block title %}{% endblock %}</title>

<!-- Bootstrap core CSS -->
{% load staticfiles %}
<link href="{% static 'static/appname/css/bootstrap.min.css' %}" rel="stylesheet">

没有运气。这是我的设置文件:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
...

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILE_DIRS ='/users/edchigliak/documents/projects/projectname/appname/static/'

就像我所理解的那样,有可能拥有一个全球性的&#34; &#39;静态文件位置&#39;您的所有项目都可以使用,以及每个应用程序&#34; &#39;静态文件位置&#39;只能由其所在的基本目录所在的应用程序使用。

任何帮助表示赞赏!

编辑:

这是我的urls.py配置:

from django.conf.urls import url
from django.contrib import admin
from budgeteer.views import hello, hours_ahead, current_datetime

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello/$', hello),
url(r'^index/$', current_datetime),
url(r'^time/plus/(\d{1,2})/$', hours_ahead),
]

5 个答案:

答案 0 :(得分:0)

我的快速猜测是你升级了一级。您的static目录嵌套在appname下。尝试将其向上移动并直接在浏览器中访问资源(http://example.com/static/appname/css/bootstrap.min.css

我从未完成应用专用资源,所以如果这是目标,我很抱歉。

答案 1 :(得分:0)

我认为您需要在网址中添加以下内容:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

除非您使用Django服务器并且它提供静态文件。

根据你的Django文档你的应用程序结构是好的。

当您设置prod并开始通过Apache / Nginx / etc提供静态服务时,您将需要运行collectstatic。 现在它还不需要。

答案 2 :(得分:0)

如果您的静态链接仅以appname开头?

,该怎么办?

即,而不是

<link href="{% static 'static/appname/css/bootstrap.min.css' %}" rel="stylesheet">

请尝试

<link href="{% static 'appname/css/bootstrap.min.css' %}" rel="stylesheet">

AFAIK,{% static %}中的字符串是静态文件夹中静态文件的路径。

我没有足够的评论点,所以我在这里猜测。

答案 3 :(得分:0)

我有类似的问题(Django 1.10)。层次结构:

myapp
   ...
   myapp
      ...
   blog
      migrations
      templates
      ...
   static
      blog
         style.css

因此,如果我添加<link href="{% static 'blog/css/bootstrap.min.css' %}" rel="stylesheet">style.css位于dir&#39; blog / css&#39;),则所有款式都无法使用。

但是当我删除&#39; css&#39;:<link href="{% static 'blog/bootstrap.min.css' %}" rel="stylesheet">style.css位于dir&#39;博客&#39;)时没关系。

可能对你有帮助!

答案 4 :(得分:-1)

你需要把这行放在 HTML 标签的外面。

{% load static %}

我在这里找到了答案:https://tutorial.djangogirls.org/en/css/