Django 找不到静态文件和模板文件

Django can't find static files and template files

在我将 settings.py 编辑为名为 settings

的目录中的 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}),)

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

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

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