【问题标题】:Django can't find css (static folder)Django 找不到 css(静态文件夹)
【发布时间】:2016-04-01 16:06:04
【问题描述】:

我正在尝试找到一种方法,如何告诉Django staticcss 这样的文件存储在哪里。问题是它可能找不到static 文件夹。我已经设置了settings.py 文件,但没有帮助。

SETTINGS.PY:

STATIC_URL = '/static/'

INSTALLED_APPS = (
    ...
    'django.contrib.staticfiles',
)

BASE.HTML:

...
...

<title>Rozcestník</title>

<!-- Bootstrap core CSS -->
  {% load static %}
  <link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
...

项目结构:

问题出在哪里?

【问题讨论】:

  • 你找到解决办法了吗?

标签: python css django python-import


【解决方案1】:

您可能需要在“urls.py”中添加您的设置和静态网址,如下所示。

#urls.py

from django.conf import settings
from django.conf.urls.static import static

您还可以在下面的链接中查看 django 的文档。 https://docs.djangoproject.com/en/3.2/howto/static-files/

【讨论】:

    【解决方案2】:

    有关此部署的一个问题是,一旦通过 AWS EB 发布,静态文件 (如 style.css)不被读取并且页面缺乏样式。文档和论坛 不是很清楚指出这是 Django 的一种部署方式 并且必须指示 Web 服务器使用这些文件。

    一旦 STATIC_ROOTSTATIC_URLproject/settings.py 和 在project/urls.py里面添加urlpatterns,问题就解决了。

    STATIC_ROOT 保存将提供静态文件的路径。
    collectstatic 将放置STATIC_ROOT 中的应用程序和管理文件。
    STATIC_URL 在浏览器请求时保存指向 STATIC_ROOT 的链接。
    + static(settings [...] 告诉网络服务器使用 STATIC_URL。

    我有一个功能齐全的项目,这里有 EB 部署说明:https://github.com/nandoabreu/django-polls

    【讨论】:

      【解决方案3】:

      我不太喜欢你的目录(结构)。

      如果文件夹“web”是一个应用程序,而“dedo”是一个带有设置的文件夹,那么您的应用程序文件夹内不能有文件夹“静态”和“模板”。

      应该是:

      dedo
        __init__.py
        settings.py
        urls.py
        views.py
      static
        css
          bootstrap.min.css
      templates
        base.html
        index.html
      web
        migrations
        __init__.py
        admin.py
        models.py
        tests.py
        views.py
      db.sqlite3
      manage.py
      

      在你的settings.py中你需要这样写:

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

      STATIC_URL = 通过浏览器访问您的静态文件

      STATICFILES_DIRS = Django 查找静态文件的位置

      重要提示:

      STATIC_ROOT = 仅在使用 WSGI(gunicorn,modwsgi,...)通过适当的 Web 服务器(nginx,apache,...)部署您的 Web 应用程序 p>

      “python manage.py collectstatic”或“python3.X manage.py collectstatic”是将静态文件从STATICFILES_DIRS(加上/admin/的静态文件)复制到STATIC_ROOT的命令,这意味着STATIC_ROOT不能是与 STATICFILES_DIRS 相同。

      【讨论】:

        【解决方案4】:

        我猜你没有使用“收集静态”动作。

        在你的 shell/CMD 中运行: python manage.py collectstatic


        如果它没有解决您的问题,请发布您遇到的错误。

        【讨论】:

        • 谢谢阿米特,当我尝试运行命令时,它返回此错误: raise ImproperlyConfigured("You're using the staticfiles app " django.core.exceptions.ImproperlyConfigured: You're using the staticfiles未将 STATIC_ROOT 设置设置为文件系统路径的应用程序。
        • 要明确:我正在复制我之前制作的另一个网站,它以这种方式工作,我认为我没有设置 STATIC_ROOT 设置,因为我在 settings.py 中找不到任何名为 STATIC_ROOT 的内容(在以前的网站上)。
        • 解决方法很简单,你需要在你的settings.py中为STATIC_ROOT添加一行。例如:``` STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_in_env", "static_root") ``` 注意它需要适合你的应用结构。这个视频可以给你一些关于它的好主意:youtu.be/8cupCFknL4Q?list=PLEsfXFp6DpzRcd-q4vR5qAgOZUuz8041S
        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 2016-02-09
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        • 2022-07-22
        相关资源
        最近更新 更多