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
- ...
- 分布
- ...
- css
- 模板
- base.html
任何帮助都将不胜感激。我不知道我可能做错了什么,我已经看了一百万次代码,显然这在我对 Django 如何提供静态文件的理解方面存在差距;但是我之前已经这样做了,没有任何问题。
最佳答案
执行以下操作:
如果您在 DEBUG 中,请在 settings.py 中设置 STATICFILES_DIRS = ("path/to/static") 变量。然后它应该仅在 DEBUG 模式下工作。
如果您希望它也可以在部署模式下工作,请在 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/