Django 上的静态文件设置和目录结构
static files settings and directory structures on Django
我阅读了 Django 手册 this page 并决定移动我的静态目录。
我移动静态目录打开页面后,浏览器报错
FileNotFoundError at /myapp/ [Errno 2] No such file or directory:
'/home/jap/git/mysite/static'
这是我的旧目录。
mysite/
|---manage.py
|---mysite/
|---myapp/
|---static/
|----test.css
那么,这是我的新目录。
mysite/
manage.py
mysite/
myapp/
static/
myapp/
test.css
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'debug_toolbar',
]
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
# cf
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
如果您能给我一些建议,我将不胜感激。
谢谢。
Django:1.9.1
Python: 3.5.1
在您的 settings.py
中,您可以定义 Django 应该在何处查找以搜索您的静态文件。
现在,您定义它应该查找的文件夹
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
这基本上是 STATICFILES_DIRS = ("/home/jap/git/mysite/static/",)
但它位于 /home/jap/git/mysite/myapp/static/
而不是配置的 /home/jap/git/mysite/static/
,因为您将 static
文件夹移到了应用程序文件夹中。
所以您应该将 STATICFILES_DIRS
定义为
APP_DIR = os.path.join(BASEDIR, 'myapp')
STATICFILES_DIRS = (
os.path.join(APP_DIR, 'static'),
)
我阅读了 Django 手册 this page 并决定移动我的静态目录。 我移动静态目录打开页面后,浏览器报错
FileNotFoundError at /myapp/ [Errno 2] No such file or directory: '/home/jap/git/mysite/static'
这是我的旧目录。
mysite/
|---manage.py
|---mysite/
|---myapp/
|---static/
|----test.css
那么,这是我的新目录。
mysite/
manage.py
mysite/
myapp/
static/
myapp/
test.css
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'debug_toolbar',
]
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
# cf
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
如果您能给我一些建议,我将不胜感激。 谢谢。
Django:1.9.1 Python: 3.5.1
在您的 settings.py
中,您可以定义 Django 应该在何处查找以搜索您的静态文件。
现在,您定义它应该查找的文件夹
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
这基本上是 STATICFILES_DIRS = ("/home/jap/git/mysite/static/",)
但它位于 /home/jap/git/mysite/myapp/static/
而不是配置的 /home/jap/git/mysite/static/
,因为您将 static
文件夹移到了应用程序文件夹中。
所以您应该将 STATICFILES_DIRS
定义为
APP_DIR = os.path.join(BASEDIR, 'myapp')
STATICFILES_DIRS = (
os.path.join(APP_DIR, 'static'),
)