Django 1.8无法加载css模板

时间:2015-11-24 11:15:10

标签: python html css django django-1.8

我在/ecomstore/static/css.css

处有CSS文件

我已经通过

将css链接到head标签中的base.html
<link rel="Stylesheet" type="text/css" href="/static/css.css" /> 

我的urls.py文件:

from django.conf.urls import include, url
from django.contrib import admin
from ecomstore import settings
from django.contrib.staticfiles import views

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^catalog/','preview.views.home'),
    # url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
# { 'document_root' : '/home/yogesh/ecomstore/static' })
]

urlpatterns = [
# other commented code here
    url(r'^catalog/?','preview.views.home'),
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{ 'document_root' : '/home/yogesh/ecomstore/static/' }),
]

Settings.py文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [os.path.join(CURRENT_PATH, 'templates')],
        'DIRS': [os.path.join(BASE_DIR, 'templates/')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

静态设置:

STATIC_URL = '/static/'
STATIC_ROOT = "/home/yogesh/ecomstore/static/"

尽管有这些东西,我不知道为什么我的css模板没有加载。同样在终端我得到以下表示某种错误。

[24 / Nov / 2015 11:11:36]“GET /static/css.css HTTP / 1.1”404 1735

2 个答案:

答案 0 :(得分:0)

  1. 使用{% static %}模板标记:

    {% load staticfiles %} 
    

  2. 在您的设置中配置静态文件目录,不要在urlconf中对路径进行硬编码:

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "static"),
        '/var/www/static/',
    ) 
    
  3. 确保您在开发过程中提供静态文件:

    urlpatterns = [
         # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    
  4. 检查django进程是否可以读取静态文件目录/home/yogesh/ecomstore/static/

答案 1 :(得分:0)

静态文件

将您的文件存储在/ecomstore/static/ecomstore/css.css而不是/ecomstore/static/css.css,因为Django默认显示在所有文件夹<app_name/static/<app_name>中,因此您不必在STATICFILES_DIRS中拥有这些文件夹变量。

Django文档

  

将静态文件存储在应用中名为static的文件夹中。对于   例如my_app / static / my_app / myimage.jpg。

阅读本文了解更多信息 信息和配置项目:Managing static files

模板

您在模板配置中也犯了一个错误。使用os.path.json功能时,您不必在最后一个文件夹中拥有/。只需使用os.path.join(BASE_DIR, 'templates')

即可

在开发期间提供静态文件

关于提供静态文件,如果你使用django内置服务器,你不必配置任何东西,Django默认提供它们。但是,如果您使用gunicorn或uWSGI,是的,您必须将项目配置为提供静态文件。

您必须在主<project_name>/<project_name>/urls.py文件中添加:

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)

现在,您的服务器将根据您在STATIC_URL文件中配置的<project_name>/<project_name>/settings.py来提供静态文件。

阅读本文以获取更多信息:Serving static files during development