Django静态路径未正确设置

时间:2013-12-08 07:14:29

标签: python css django

我正在努力学习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如何尝试查找资源。如果有人可以指导我完成这件事,那就太好了。

<小时/> Guyz Guyz我只是在打击并试着这发生了。我将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

2 个答案:

答案 0 :(得分:1)

现在这很有意义。

问题就在于你的堆栈跟踪:

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,它将遍历项目使用的所有应用程序和静态文件目录,并编译一组所需的所有“最终”静态文件。 STATIC_ROOT目录已准备好与已完成的网站一起发布。

如果STATIC_ROOT目录包含在collectstatic所经历的目录中,那么显然会有一个递归循环。

答案 1 :(得分:0)

您是否已将以下内容添加到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

...然后查看加载网页时回溯历史记录返回的内容。

相关问题