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 中定义的目录。
在我将 settings.py
编辑为名为 settings
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 中定义的目录。