python - Django 找不到静态文件。需要第二双眼睛,我快疯了

标签 python django twitter-bootstrap web static

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 中用于 Bootstrap 的相关部分:

!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 如何提供静态文件的理解方面存在差距;但是我之前已经这样做了,没有任何问题。

最佳答案

执行以下操作:

  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 变量。

希望现在很清楚 =)。

关于python - Django 找不到静态文件。需要第二双眼睛,我快疯了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24199029/

相关文章:

django - 独立于应用程序的 django admin 上的新 URL

javascript - Bootstrap 工具提示 (3.3.6) 显示灰色框

jquery - Bootstrap CSS - 缩略图图像调整大小和响应式

python - 在 json 有效时获取 ValueError : No JSON object could be decoded,

python - 工作队列与持续部署框架

python - 限制 Python 类中属性的可能值

javascript - Bootstrap Forms Accordion 不工作

python - 多组独特元素

Django订单选择字段

javascript - 如何使用脚本标签下的url标签