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'),
)