2015-04-07 102 views
0

我知道这是一个愚蠢的问题,但我已经通过Django文档读了十几遍,并阅读了这里的每个相关问题,但仍然无法弄清楚我做错了什么。Python Django静态css文件

我想将我的模板CSS链接到静态根目录中的文件。有人能告诉我我做错了什么吗?

settings.py:

STATIC_URL = '/static/' 
STATIC_ROOT = 'C:/Users/Chris/Dropbox/MyProject/MyProject/static/styles/' 

STATICFILES_DIRS = (
    "C:/Users/Chris/Dropbox/MyProject/MyProject/static/styles", 
    ) 
模板

{% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static '/styles/style.css' %}"> 

urls.py

from django.conf.urls.static import static 

urlpatterns = patterns('', 

# my url patterns here 

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

我的猜测是,无论是在urls.py静态文件代码不正确或settings.py中的STATICFILES_DIRS,但我已经基于stackoverflow上的其他问题尝试了一百万个组合似乎没有任何工作。我刚刚得到一个404页面未找到错误。

任何帮助表示赞赏。我在这上面花了很多时间。

回答

2

你有两个主要问题:

  1. 您的STATIC_ROOT目录包含在STATICFILES_DIRS中。一旦你准备好部署,STATIC_ROOT就是其中的collectstatic command will copy all static files。显然,您不希望此路径位于已有静态文件的位置,因为此路径中的所有文件都将被覆盖。

  2. 您的静态url包含已包含在STATICFILES_DIRS中的路径组件。您的/MyProject/static/styles位于STATICFILES_DIRS,这意味着static标记将在此目录内查找请求的文件。现在您正在请求链接到'/styles/style.css',因此django正在查找此文件:/MyProject/static/styles/styles/style.css,该文件不存在。要解决此问题,请将静态标记更改为{% static 'style.css' %}

+0

的主要问题是“/风格/”目录的复制。非常感谢。现在就开始工作了。 –

0

试试这个 在settings.py文件

STATIC_ROOT = os.path.join(SITE_ROOT, 'templates/static/') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (

         SITE_ROOT + '/templates', 

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

) 

和urls.py文件

urlpatterns += patterns('', 
         (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
         {'document_root': os.path.join(settings.SITE_ROOT, 'templates/static')}), 

        ) 

希望这将帮助你

0

使用静态路径可能更直观。

在settings.py在你的模板声明

STATIC_PATH = os.path.join(BASE_DIR, 'static') 
# Add any additional locations of static files 

STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static". 
# Always use forward slashes, even on Windows. 
# Don't forget to use absolute paths, not relative paths. 
# os.path.join(ROOT_PATH, "public") 
    STATIC_PATH, 
) 

然后只需通过我的所有尝试加载文件