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

2024-02-01

Django 不会为我的静态文件提供服务。这是error回到:

[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

这是我的相关部分基本.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">

相关代码来自设置.py(注意:模板工作得很好。)

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

STATIC_URL = '/static/'

STATIC_ROOT = ''

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

  • admin
  • 数据库sqlite3
  • 项目名
  • 管理.py
  • app name
  • static
    • css
      • ...
    • dist
      • ...
  • template
    • 基本.html

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


请执行下列操作:

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

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

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

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

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

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

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

希望现在已经清楚了=)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 找不到静态文件。需要第二双眼睛,我快疯了 的相关文章

随机推荐