2013-08-21 69 views
3

对不起,我知道类似的问题已被多次询问过......我真的很抱歉再次问,但我遇到了很多麻烦这(我花了数小时和数小时尝试一切,但我只是觉得我没有取得任何进展),我想我会寻求一些具体的帮助。Dreamhost上的Django 1.5 - 找不到静态文件,404s

我想在Dreamhost上设置一个Django应用程序。我通过一个virtualenv使用Django 1.5,它工作得很好。但是,Django似乎无法找到我的静态文件。我的设置如下:

我的网站目录:

~/distracti.co.uk $ tree 
. 
├── distracti 
│   ├── distracti 
│   │   ├── __init__.py 
│   │   ├── settings.py 
│   │   ├── urls.py 
│   │   └── wsgi.py 
│   ├── manage.py 
│   └── polls 
│    ├── __init__.py 
│    ├── admin.py 
│    ├── models.py 
│    ├── static 
│    │   ├── images 
│    │   │   └── test.png 
│    │   └── style.css 
│    ├── templates 
│    │   └── polls 
│    │    ├── index.html 
│    │    └── style.css 
│    ├── tests.py 
│    ├── urls.py 
│    └── views.py 
├── django-setup.py 
├── passenger_wsgi.py 
├── public 
│   ├── favicon.gif 
│   ├── favicon.ico 
│   └── quickstart.html 
├── static 
└── tmp 
    ├── default_passenger_wsgi.py 
    ├── old_passenger_wsgi.py 
    ├── passenger_wsgi.py 
    └── restart.txt 

10 directories, 24 files 

〜/ distracti.co.uk/distracti/distracti/settings.py的最重要的一点(我认为):

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/var/www/example.com/static/" 
STATIC_ROOT = '/home/<myusername>/distracti.co.uk/static/' 

# URL prefix for static files. 
# Example: "http://example.com/static/", "http://static.example.com/" 
STATIC_URL = '/static/' 

# 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. 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.static', 
    'django.contrib.auth.context_processors.auth', 
    #... other context processors 
) 

... 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    # Uncomment the next line to enable the admin: 
    # 'django.contrib.admin', 
    # Uncomment the next line to enable admin documentation: 
    # 'django.contrib.admindocs', 
    'polls', 
) 

我可以运行

python manage.py collectstatic 

和我的应用程序特定的静态文件(连同很多Django管理的静态文件)COLLEC泰德到我STATIC_ROOT文件夹:

73 static files copied. 

~/distracti.co.uk $ ls static/ static/images 
static/: 
admin images style.css 

static/images: 
test.png 

这里是一个被提供给浏览器我的index.html文件的顶部:

{% load staticfiles %} 

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

<img src="{% static 'images/test.png' %}"> 

我可以告诉大家,这个部分至少是工作,因为链接显示在我的浏览器

<link rel="stylesheet" type="text/css" href="/static/style.css"> 

的方式我认为会的工作是,Django的会从HREF字符串删除STATIC_URL(“/静态/”),然后使用该字符串的其余部分作为相对位置以在STATIC_ROOT目录内查找该文件。因此,考虑到余数为style.css的',我还以为会的Django能够找到style.css文件在我STATIC_ROOT目录:

[recall STATIC_ROOT = '/home/<myusername>/distracti.co.uk/static/'] 

~/distracti.co.uk $ ls static/ 
static/: 
admin images style.css 

所以文件是那里等待被发送到浏览器,在我的STATIC_ROOT目录中!

然而,尝试为我可能,这是行不通的... :( 我的CSS和PNG文件与404错误在我的浏览器满足:

GET http://www.distracti.co.uk/static/style.css 404 (NOT FOUND) 
GET http://www.distracti.co.uk/static/images/test.png 404 (NOT FOUND) 

任何帮助都将是非常我从来没有想过这么简单的事情可能会如此困难,我真的很感谢任何建议,对于这一点,我感到非常沮丧,因为不理解Django发现这些文件的过程,任何人都可以帮助?

谢谢

Gare日

回答

0

您可以使用findstatic检查配置https://docs.djangoproject.com/en/1.5/ref/contrib/staticfiles/#django-admin-findstatic

你也应该尝试,如果findstatic找到你的文件,重新启动服务器。

+0

嗨,谢谢你的回复。 我试过findstatic,它实际上找到我的文件,但不是在STATIC_ROOT目录中,它发现它们在它们的原始静态目录中: 〜/ distracti.co.uk/distracti $ python manage.py findstatic style。 CSS 发现“的style.css”在这里: /home/myusername/distracti.co.uk/distracti/polls/static/style.css 但由于某些原因我活的Web服务器没有找到这些文件,即使我已经执行了Django和Passenger的重新启动... – user2140400