【问题标题】:Django cannot find static files. Need a second pair of eyes, I'm going crazyDjango 找不到静态文件。需要第二双眼睛,我快疯了
【发布时间】:2014-08-03 15:24:16
【问题描述】:

Django 不会提供我的静态文件。这是返回的错误

[13/Jun/2014 06:12:09] "GET /refund/ HTTP/1.1" 200 2927
[13/Jun/2014 06:12:09] "GET /static/css/bootstrap.min.css HTTP/1.1" 404 1667
[13/Jun/2014 06:12:09] "GET /static/css/cover.css HTTP/1.1" 404 1643
[13/Jun/2014 06:12:09] "GET /static/js/bootstrap.min.js HTTP/1.1" 404 1661
[13/Jun/2014 06:12:09] "GET /static/assets/js/docs.min.js HTTP/1.1" 404 1667  
[13/Jun/2014 06:12:09] "GET /static/js/bootstrap.min.js HTTP/1.1" 404 1661
[13/Jun/2014 06:12:09] "GET /static/assets/js/docs.min.js HTTP/1.1" 404 1667

这是我的 base.html 中用于引导的相关部分:

!DOCTYPE html>
<html lang="en">
{% load static %}
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="../../assets/ico/favicon.ico">

<title>Cover Template for Bootstrap</title>

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

<!-- Custom styles for this template -->
<link href="{% static "css/cover.css" %}" rel="stylesheet">

settings.py 中的相关代码(注意:模板运行良好。)

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'),
)

STATIC_URL = '/static/'

STATIC_ROOT = ''

这是我的 django 项目的布局方式:

  • 管理员
  • db.sqlite3
  • 项目名称
  • manage.py
  • 应用名称
  • 静态
    • CSS
      • ...
    • 分布
      • ...
  • 模板
    • base.html

任何帮助都将不胜感激。我不知道我可能做错了什么,我已经看了一百万次代码,显然这在我对 Django 如何提供静态文件的理解方面存在差距;但是我之前已经这样做了,没有任何问题。

【问题讨论】:

  • 您是否使用runserver 为您的应用程序提供服务?与debug=True? django.contrib.staticfiles 加载了吗?
  • 目录名是“template”还是“templates”?
  • @swordofpain 我现在无法检查,但我会在今晚晚些时候检查。
  • @arocks 是模板,只是打错了。

标签: python django twitter-bootstrap web static


【解决方案1】:

执行以下操作:

  1. 如果您在 DEBUG 中,请在 settings.py 中设置 STATICFILES_DIRS = ("path/to/static") 变量。然后它应该在 DEBUG 模式下工作。

  2. 如果您希望它也可以在部署模式下工作,请在 settings.py 中设置 STATIC_ROOT = ("path/to/static_root") 变量。然后,执行python manage.py collectstatic,它也应该可以工作了。

现在,为了更好地理解 django 如何管理静态文件:

  • Django 有一些预定义的位置来查找和收集静态文件,您可以在 settings.py 中使用 STATICFILES_FINDERS 指定在哪里找到它们。默认情况下,它会在您的应用内部中查找静态文件夹。您可以通过设置 STATICFILES_DIRS 变量(路径列表或元组)告诉 Django 在其他部分查找静态文件。

  • 在 DEBUG 模式下,静态文件是从此路径中选取的(而不是从您收集文件的 static_root 中)。

  • 当你执行python manage.py collectstatic 时,Django 会遍历所有可以找到静态文件的目录,并将它们放在你的静态根目录中。当您在部署模式下运行时,将从该目录提供静态文件。

PS:我通常做的是创建一个名为 common 的应用程序并在其中创建一个静态目录来放置我的项目(以及模板)的所有常见 css、js。这样,我不必指定 STATICFILES_DIRS 变量。

希望现在很清楚 =)。

【讨论】:

  • 这比文档中的解释要好得多。老实说,写过基于 Django 网络文档的某些部分的人永远都不应该再写了。
  • 谢谢哥们,这让我发疯了,我花了大约 4 个小时才弄明白,最后感谢你,我设法链接了我的 css 文件。
  • 完美解释!
【解决方案2】:

更改 settings.py 的 STATIC_ROOT,希望它会起作用。我面临同样的问题....

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

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

【讨论】:

  • 你成就了我的一天。向你致敬。
【解决方案3】:

好吧,只是通过教程,我几乎被这个问题所困扰。只需重新启动网络服务即可修复它。 因此,如果只是完成教程说明,请将目录 static//style.css 放入名为 的目录中,同时放入

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

应使用该 CSS 文件设计的 html 文件(例如,index.html)的头部部分。

【讨论】:

    【解决方案4】:

    我对 Django 中的静态文件有这个问题 需要一天的时间才能发现静态文件无法加载且未在我的项目中以 runserver 模式显示的情况。

    终于找到问题所在了……

    我认为这个问题是因为您的文件系统中的权限问题。 您必须获得对项目中静态文件的权限,并且您会看到问题已解决。

    在linux中你可以运行这个命令:

    sudo chmod 777 <your static folder relative address> -R
    

    【讨论】:

      【解决方案5】:

      根据版本更改您的 TEMPLATE_DIRS

      如果您的版本是 3.1 或以下

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

      如果是3.2以上

      STATICFILES_DIRS = [
      BASE_DIR / "static",]
      

      查看this link 以获得更清晰的信息

      【讨论】:

        【解决方案6】:

        python manage.py collectstatic

        这个命令在我被卡住的几个小时后帮助了我很多

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        相关资源
        最近更新 更多