我在名为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}),)
答案 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中定义的目录中添加别名即可。