【问题标题】:STATIC_ROOT doesn't find my static filesSTATIC_ROOT 找不到我的静态文件
【发布时间】:2017-01-27 14:11:09
【问题描述】:

我是 Django 的新手,我正在尝试找到一种方法来在我的项目中加载我的 css 文件。这是我的settings.py 文件

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    #"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

AUTHENTICATION_BACKENDS = (
    # Uncomment the following to make Django tests pass:
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

我有一种方法可以使用变量STATICFILES_DIRS,但它不能与其他类似的变量一起使用。

我应该怎么做才能解决它?

额外信息:

我的base.html文件静态文件调用:

<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'icomoon_style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap.min.css' %}" />

我的文件夹处置:

  • OntoLogica(主文件夹)
    • Ontologica(项目文件夹)
    • 静态文件夹
      • icomoon_style.css
      • style.css
      • css 文件夹
      • bootstrap.min.css

【问题讨论】:

    标签: css django django-staticfiles


    【解决方案1】:

    以正确的方式设置静态路径。从我的项目中获得灵感。

    settings.py

    import os
    import sys
    from os.path import abspath, dirname, join
    
    sys.path.append(join(dirname(__file__), "../applications"))
    PROJECT_ROOT = abspath(dirname(__file__))
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    MEDIA_ROOT = join(PROJECT_ROOT, '../media/')
    MEDIA_URL = '/media/'
    STATIC_ROOT = join(PROJECT_ROOT, '../static/')
    STATIC_URL = '/static/'
    

    我的文件结构:

    Main directory
                  project dir
                            settings.py
                            urls.py
                  media
                  static folder.
    

    【讨论】:

    • 您的解决方案无效。我的静态文件中仍然出现 404。
    • stackoverflow.com/questions/11033571/… 这将对您有所帮助,如果您找到正确的请勾选正确。
    • 我实际上找到了答案......很快就会发布这个......但我感谢你的关注和帮助。谢谢!
    【解决方案2】:

    正如 docs 的“警告”部分所述

    这个 [STATIC_ROOT] 最初应该是一个空的目标目录,用于将静态文件从它们的永久位置收集到一个目录中,以便于部署; 它不是永久存储静态文件的地方

    所以你应该使用STATICFILES_DIRS 来指向你的静态文件。

    最后确保在模板中使用{% load staticfiles %} 来加载静态文件。

    【讨论】:

      【解决方案3】:

      我找到了解决问题的方法。在本站找到:https://devcenter.heroku.com/articles/django-assets

      我要做什么:

      添加PROJECT_ROOT 行并将STATIC_ROOT 行更改为:

      PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
      STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
      

      有了这个我可以毫无问题地添加STATICFILES_DIRS这一行:

      STATICFILES_DIRS = (
          os.path.join(PROJECT_ROOT, 'static'),
      )
      

      它对我来说非常有效,我希望它也可以帮助其他人。谢谢

      【讨论】:

        猜你喜欢
        • 2020-08-02
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 2020-05-05
        • 2021-08-27
        • 2014-11-10
        相关资源
        最近更新 更多