2013-05-05 149 views
1

我想要跟着这些instructions在我的Django项目中启用静态文件。 我有我的settings.py文件中的Django中没有加载静态文件

STATIC_URL = '/static/' 

。我已将'django.contrib.staticfiles',添加到INSTALLED_APPS = (...)部分 我创建了一个文件夹mysite/static/mysite并将文件放到那里。但是在运行服务器后,我无法访问我的文件http://127.0.0.1:8000/static/mysite/style.css。 我做错了什么?

+0

什么是'STATIC_ROOT'? – 2013-05-05 23:17:57

+0

'STATIC_ROOT =''' – user1460819 2013-05-05 23:27:29

+0

你可以把代码STATICFILES_DIRS – 2013-05-06 00:43:59

回答

1

settings.py包括此:

import os 
settings_dir = os.path.dirname(__file__) 
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir)) 

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static/mysite/'), 
) 

而在你urls.py包括这些行结尾:

from django.conf.urls.static import static 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
urlpatterns += staticfiles_urlpatterns() 

希望它能帮助。

+0

不幸的是,它没有帮助... – user1460819 2013-05-06 10:54:45

+0

现在,当我尝试访问任何静态文件时,它给了我错误500 ... – user1460819 2013-05-06 11:09:35

+0

500错误是一个内部服务器错误。这是一个例外。你能发布异常消息吗? – 2013-05-06 12:35:22

0

我可以建议几件事情要检查:

  • 在我的项目至少,静态文件夹是在应用程序目录,而不是项目目录。例如,mysite/myapp/static/myapp/img.jpg而不是mysite/static/mysite/img.jpg。您的项目可能不在正确的位置。

  • 在链接文件之前,请确保{%load staticfiles%}在您的html模板中。

  • 当您在HTML模板链接文件,而不是直接的URL就像

<link rel="stylesheet" href="myapp/css/custom.css">

使用

<link rel="stylesheet" href="{% static 'myapp/css/custom.css' %}">

这是足以让工作的静态文件在我的项目中,无需修改urls.py或手动设置PROJECT_ROOT或STATICFILES_DIRS。

+0

我不使用类似''link rel =“stylesheet”href =“{%static'myapp/css/custom.css'%}”>''的结构,我只是试图直接访问静态文件.../static /style.css,这会失败... – user1460819 2013-05-06 11:11:59

+0

正如您所链接的文档所说,模板标记是可取的。它看起来像两个都应该工作,所以问题很可能是文件不是项目可以访问它们的地方。如果您将静态文件夹放在应用程序目录中,如上所述,它应该自动找到它们。但是,如果您将它们放在主项目目录中,则必须将其添加到settings.py中的STATICFILES_DIRS中。请在链接的文档中查看第4点以下的内容,并说明如何执行此操作。 – 2013-05-06 18:19:59