小编典典

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

python

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项目的布局方式:

  • administrators
  • db.sqlite3
  • Project name
  • manage.py
  • apply name
  • Static
    • CSS
    • dist
  • 模板
    • base.html

任何帮助将不胜感激。我不知道我可能做错了什么,我已经看了一百万遍代码了,很明显,这在我对Django如何提供静态文件的理解上存在一定差距。但是我以前没有做过这个。


阅读 311

收藏
2020-12-20

共1个答案

小编典典

请执行下列操作:

  1. 如果您处于调试状态,请在settings.py中设置STATICFILES_DIRS =(“ path / to / static”)变量。然后,它 应在调试模式下工作。

  2. 如果希望它也可以在部署模式下工作,请在settings.py中设置STATIC_ROOT =(“ path / to / static_root”)变量。然后,执行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变量。

希望现在清楚=)。

2020-12-20