【问题标题】:Django static files outside app not loading应用程序外的Django静态文件未加载
【发布时间】:2016-04-19 06:28:03
【问题描述】:

如果我的静态文件位于应用程序内部,它们将可以正常加载,但如果它们位于应用程序外部,例如在我的项目目录中,它们将不会加载。我知道这似乎是一个被问了一百万次的问题,但我看不出我的代码要改变什么。这是 Django 1.9

文件夹结构

/site
├── manage.py
├── project
│   ├── __init__.py
│   ├── settings.py
│   ├── static
│   │   └── main
│   │       ├── css
│   │       ├── fonts
│   │       ├── img
│   │       ├── libs
│   │       └── scripts
│   ├── templates
│   ├── urls.py
│   └── wsgi.py
├── app1
├── app2
└── app3

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rooms',
    'events',
    'activities',
] 

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIR = os.path.join(BASE_DIR, "static")

index.html

{% load staticfiles %}
    <link rel="stylesheet" type="text/css" href="{% static "main/css/bootstrap.css" %}">
    <link rel="stylesheet" type="text/css" href="{% static "main/libs/animate.min.css" %}">

【问题讨论】:

  • 我认为有一个拼写错误。应该是 STATICFILES_DIRS 而不是 STATICFILES_DIR
  • @python 拼写似乎并不重要。我测试了两者。不过还是谢谢
  • @python 我弄错了,它确实需要是STATICFILES_DIRS 但我也忘记了os.path.join(BASE_DIR, "static") 后面的逗号再次感谢!
  • 我已经添加了答案。如果有帮助请采纳。

标签: django django-staticfiles django-1.9


【解决方案1】:

我认为有一个拼写错误。应该是STATICFILES_DIRS 而不是STATICFILES_DIR

【讨论】:

  • 谢谢。让这个工作有很多困难,主要是因为STATICFILES_DIRS 需要准确拼写。我还有另一个错误The STATICFILES_DIRS setting is not a tuple or list - 通过在表达式周围添加[] 来解决。
【解决方案2】:

您将静态目录放在项目文件夹中,如果您希望它在那里(虽然不是正确的方式),您应该更改:

STATICFILES_DIR = os.path.join(BASE_DIR, "static")

到:

STATICFILES_DIR = os.path.join(BASE_DIR, "project/static")

** 我认为最好将你的静态文件夹放在项目文件夹之外(如果你想使用全局静态文件)**

【讨论】:

  • 感谢您关于不要将静态文件放入项目文件夹的建议。我希望这些文件是全局的,所以我将它们移到了站点根目录。不幸的是,在进行更改后,我仍然无法加载静态文件。
猜你喜欢
  • 2018-06-16
  • 2022-07-30
  • 2019-08-31
  • 2014-11-12
  • 2021-04-03
  • 2012-01-21
  • 2016-11-06
  • 1970-01-01
相关资源
最近更新 更多