Django无法找到静态文件和模板文件

时间:2015-01-07 05:35:58

标签: python django

我在名为settings

的目录中编辑settings.py到3个文件(base.py prod.py dev.py)之后

无法找到Django模板或静态文件(404 error

我该怎么办?

base.py:

DEBUG = FALSE 
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    ("js", os.path.join(STATIC_ROOT,'js')),
    ("css", os.path.join(STATIC_ROOT,'css')),
    ("images", os.path.join(STATIC_ROOT,'images')),
)
TEMPLATE_DIRS=( os.path.join(BASE_DIR,'templates'),)

prod.py:

from .base import *
DATABASES = {   
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': " ",
        'USER': " ",
        'PASSWORD': " ",
        'HOST': "" ,
        'PORT': "5432",
    }
}

wsgi.py:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

urls.py:

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

2 个答案:

答案 0 :(得分:0)

django.views.static.serve仅适用于开发模式(DEBUG = True)。见the warning in the docs

所以在生产机器上你必须serve static files with the web-server而不是django app。

答案 1 :(得分:0)

如果您在生产中执行此操作,请确保运行python manage.py collectstatic,它将所有静态文件存储到您在settings.py文件中由STATIC_ROOT定义的目录中。然后使用Web服务器(如nginx或apache)为这些服务器提供服务,只需在STATIC_ROOT中定义的目录中添加别名即可。