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项目的布局方式:
任何帮助将不胜感激。我不知道我可能做错了什么,我已经看了一百万遍代码了,很明显,这在我对Django如何提供静态文件的理解上存在一定差距。但是我以前没有做过这个。
请执行下列操作:
如果您处于调试状态,请在settings.py中设置STATICFILES_DIRS =(“ path / to / static”)变量。然后,它 仅 应在调试模式下工作。
如果希望它也可以在部署模式下工作,请在settings.py中设置STATIC_ROOT =(“ path / to / static_root”)变量。然后,执行python manage.py collectstatic,它也应该起作用。
python manage.py collectstatic
现在,为了更好地了解django如何管理静态文件:
Django有一些预定义的位置来查找静态文件并收集它们,您可以在settings.py中使用STATICFILES_FINDERS指定在哪里找到它们。默认情况下,它会 在 您的应用程序中查找静态文件夹。您可以通过设置STATICFILES_DIRS变量(路径的列表或元组)来告诉Django在其他部分中查找静态文件。
在调试模式下,将从此路径中选择静态文件(而不是从收集文件的static_root中)。
执行时python manage.py collectstatic,Django会遍历可以找到静态文件的所有目录,并将它们放在您的静态根目录中。在部署模式下运行时,将从此目录提供静态文件。
PS:我通常要做的是创建一个名为common的应用程序,并在其中创建一个静态目录,以放置所有通用CSS,js用于我的项目(以及模板)。这样,我不必指定STATICFILES_DIRS变量。
希望现在清楚=)。