【问题标题】:static files settings and directory structures on DjangoDjango 上的静态文件设置和目录结构
【发布时间】:2016-02-16 02:24:50
【问题描述】:

我阅读了 Django 手册的this page 并决定移动我的静态目录。 移动静态目录并打开页面后,浏览器出现错误。

FileNotFoundError at /myapp/ [Errno 2] 没有这样的文件或目录: '/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

【问题讨论】:

  • BASE_DIR的值是多少?
  • 感谢您的回复,Rafeal。我的 BASE_DIR 是“/home/jap/git/mysite”。当我将 mysite/template/ 移动到 mysite/myapp/templates/myapp/ 时,它适用于我的 settings.py。

标签: python django django-staticfiles


【解决方案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'),
)

【讨论】:

  • 啊,真的吗?手册刚刚提到在这个页面(docs.djangoproject.com/en/1.9/intro/tutorial06)和这个页面(docs.djangoproject.com/en/1.9/howto/static-files)上创建静态目录,所以我认为我所要做的就是创建目录。
  • 但是为什么我的 Django 不能识别 /myapp/static/myapp/?我的英语理解不太好,所以也许我误解了手册,但是手册没有提到包括 APP_DIR 在内的 settings.py。它只是说 AppDirectoriesFinder 可以在 APP 下找到 /static/。我猜Django可以默认识别/myapp/static/myapp/。
  • @yamachan 在app 文件夹中创建static 文件夹,然后在static 文件夹中创建app 文件夹是没有意义的。
猜你喜欢
  • 2014-05-05
  • 2015-02-05
  • 2013-11-12
  • 1970-01-01
  • 2020-12-11
  • 2013-01-10
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多