【问题标题】:Problem with loading static files on Django在 Django 上加载静态文件的问题
【发布时间】:2020-06-24 06:20:02
【问题描述】:

我正在使用 Django 3.0.3 和 Python 3.7.6。

我在 https://docs.djangoproject.com/en/3.0/howto/static-files/ 上关注了 Django 文档,但我找不到问题所在。

目录:

project_name
   -app_name
   -static
      -css
         -main.css
      -js
      ...
   -project_name
      ...
      -settings.py

settings.py:

INSTALLED_APPS = [
    ...
    'django.contrib.staticfiles',
]
...
STATIC_URL = '/static/'

当我尝试在模板中使用静态文件时:

{% load static %}
<link rel="stylesheet" href="{% static "css/main.css" %}">

pycharm 显示 unresolved template reference '"css/main.css"'

终端节目 "GET /static/css/animate.css HTTP/1.1" 404 1671

【问题讨论】:

  • 您能否重新格式化您的目录列表以使其有意义?
  • 您是否:1) 定义了 STATIC_ROOT 和/或 STATICFILES_DIRS 2) 运行 collectstatic 3) 为静态文件添加了 urlpatterns? DEBUG=true 还是 false?
  • 感谢您的提示。我刚开始学习 Django,这些技巧帮助我更好地理解它。

标签: django python-3.x django-templates django-staticfiles


【解决方案1】:

我通过以下步骤解决了这个问题:

1.在settings.py中添加如下代码

STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static/'), )

2.在我的模板中添加type="text/css"

&lt;link rel="stylesheet" type="text/css" href="{% static "css/main.css" %}"&gt;

虽然它对我有用,但我不知道为什么。

【讨论】:

    【解决方案2】:

    在你的 url.py 中使用它

        urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
        urlpatterns+=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,但我使用的是django 3.1。 我只将此行添加为official document

      在settings.py中

      ...
      STATIC_URL = '/static/'
      STATICFILES_DIRS = [BASE_DIR / 'static']
      

      在 .html 文件中

      {% load static %}
      ...
      <link rel="stylesheet" href="{% static 'css/application.css' %}" type="text/css" />
      

      而且效果也很好。

      【讨论】:

        猜你喜欢
        • 2020-11-06
        • 2021-01-24
        • 2016-11-13
        • 1970-01-01
        • 2021-11-16
        • 2011-06-11
        • 2022-01-11
        • 2018-03-08
        • 2015-04-25
        相关资源
        最近更新 更多