[英]Django static path is not properly set
我正在尝试学习Django
,在settings.py中我设置了:
MEDIA_ROOT = '/home/hussain/django/ratingsite/ratingsite/media'
MEDIA_URL = 'media/'
STATIC_ROOT = '/home/hussain/django/ratingsite/ratingsite/static'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/home/hussain/django/ratingsite/ratingsite/static',)
我的css文件在我的
/home/hussain/django/ratingsite/ratingsite/static/css/default.css
但是当我尝试访问网页时,它不会加载CSS并显示错误消息。
"NetworkError: 500 Internal Server Error - http://localhost:8000/static/css/default.css"
我是新来的,所以我不明白我的根目录是什么。 什么先运行以及Django如何尝试查找资源。 如果有人可以指导我做到这一点,那就太好了。
static
文件夹重命名为staticfiles
,然后在STATICFILES_DIRS
替换了
'/home/hussain/django/ratingsite/ratingsite/static/',
以
'/home/hussain/django/ratingsite/ratingsite/staticfiles/',
并且它起作用了。
python manage.py runserver --traceback
输出
hussain@jarvis:~/django/ratingsite$ python manage.py runserver --traceback Validating models... 0 errors found December 08, 2013 - 01:48:39 Django version 1.5.4, using settings 'ratingsite.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [08/Dec/2013 01:48:41] "GET / HTTP/1.1" 200 930 Traceback (most recent call last): File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run self.result = application(self.environ, self.start_response) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 73, in __call__ return super(StaticFilesHandler, self).__call__(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 255, in __call__ response = self.get_response(request) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 63, in get_response return self.serve(request) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 56, in serve return serve(request, self.file_path(request.path), insecure=True) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/views.py", line 38, in serve absolute_path = finders.find(normalized_path) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 238, in find for finder in get_finders(): File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 253, in get_finders yield get_finder(finder_path) File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 31, in wrapper result = func(*args) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 275, in _get_finder return Finder() File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 62, in __init__ "The STATICFILES_DIRS setting should " ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting [08/Dec/2013 01:48:42] "GET /static/css/default.css HTTP/1.1" 500 59 Traceback (most recent call last): Traceback (most recent call last): File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run self.result = application(self.environ, self.start_response) self.result = application(self.environ, self.start_response) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 73, in __call__ File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 73, in __call__ return super(StaticFilesHandler, self).__call__(environ, start_response) return super(StaticFilesHandler, self).__call__(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 255, in __call__ File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 255, in __call__ response = self.get_response(request) response = self.get_response(request) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 63, in get_response File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 63, in get_response return self.serve(request) return self.serve(request) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 56, in serve File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 56, in serve return serve(request, self.file_path(request.path), insecure=True) return serve(request, self.file_path(request.path), insecure=True) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/views.py", line 38, in serve File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/views.py", line 38, in serve absolute_path = finders.find(normalized_path) absolute_path = finders.find(normalized_path) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 238, in find File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 238, in find for finder in get_finders(): for finder in get_finders(): File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 253, in get_finders File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 253, in get_finders yield get_finder(finder_path) yield get_finder(finder_path) File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 31, in wrapper File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 31, in wrapper result = func(*args) result = func(*args) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 275, in _get_finder File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 275, in _get_finder return Finder() return Finder() File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 62, in __init__ File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 62, in __init__ "The STATICFILES_DIRS setting should " "The STATICFILES_DIRS setting should " ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
现在这很有意义。
问题是这是在您的堆栈跟踪中写的:
ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
并根据您的初始配置:
STATIC_ROOT = '/home/hussain/django/ratingsite/ratingsite/static'
STATICFILES_DIRS = (
'/home/hussain/django/ratingsite/ratingsite/static',)
您不会希望它们都指向完全相同的目录 。 由于以下原因,不允许这样做。
当您更改这些配置之一的位置时, ImproperlyConfigured
错误已修复(因此它们不再相同)。
解决方案是:
创建一个不同的STATIC_ROOT
目录(我们将其称为/public/static/
), 不要在该目录中放置任何文件,这是当您准备发布网站时所有静态文件自动收集到的位置。
将要开发的文件的位置放在STATICFILES_DIRS
。
当你准备发布你的项目,你可以运行$ ./manage.py collectstatic
这将通过所有项目使用的应用程序和staticfiles目录和编制一套所有的“最终”静态文件的您在需要STATIC_ROOT
目录准备好与最终站点一起发布。
如果您STATIC_ROOT
目录被包含在通过过去了目录collectstatic
有显然是一个递归循环。
您是否已将以下内容添加到urls.py
?
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
按照此处的说明: https : //docs.djangoproject.com/en/dev/howto/static-files/
尽管您遇到500
错误,这提示了另一个问题。
输出是什么?:
$ python manage.py validate --traceback
这会说明其他错误吗?
如何输出:
$ python manage.py shell
>>> from django.conf import settings
>>> print(settings.STATICFILES_DIRS)
当它返回500
而不是预期的404
您可以运行:
$ python manage.py runserver --traceback
...,然后查看在加载网页时返回的追溯历史记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.