首页 > 解决方案 > Django 找不到静态文件

问题描述

我正在尝试用 Django 建立一个论坛。我想使用带有particle.js 的动画背景。当我写这段代码时:

  <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Particles login</title>
  <link rel="stylesheet" href="style.css">

</head>
<body>
  <div id="particles-js">

  </div>

  <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>

  <script>
    particlesJS.load('particles-js', 'particles.json', function(){
      console.log('particles.json loaded...');
    });
  </script>
</body>
</html>

并在实时服务器上运行它,我得到了我想要的。但是,我调整了 Django 的代码:

<!DOCTYPE html>
<html lang=en>

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" href="style.css">
    
</head>

<body>
{% include 'snippets/base_css.html' %}
{% include 'snippets/header.html' %}




<!-- Body -->
<style type="text/css">
    .main{
        min-height: 100vh;
        height: 100%;
    }
    

    #particles-js{
      height: 100%;
      color:turquoise;
 
}


</style>
<div class="main">
    <div id="particles-js">
  </div>

  <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>

  <script>
    particlesJS.load('particles-js', 'particles.json', function(){
      console.log('particles.json loaded...');
    });
  </script>
        
    

    

    {% block content %}

    {% endblock content %}
</div>

</div>
<!-- End Body -->

{% include 'snippets/footer.html' %}

</body>


</html>

当我用 Django 运行它时。即使这些文件的位置完全相同,我也会收到以下错误:

Not Found: /style.css
[28/May/2021 00:21:59] "GET /style.css HTTP/1.1" 404 2263
Not Found: /particles.json
[28/May/2021 00:21:59] "GET /particles.json HTTP/1.1" 404 2278

有人可以请教我这个问题吗?我应该在 settings.py 中的静态文件中添加一些东西吗?

标签: javascriptpythonhtmldjangodjango-templates

解决方案


首先,在settings.py 中,添加:

STATICFILES_DIRS = [
    "<PATH_TO_YOUR_STATIC_DIR>"
]

然后在你的 HTML 文件的开头,写{% load static %}

之后,无论您想在何处引用静态文件,都可以使用以下语法:{% static 'PATH_TO_STATIC_FILE' %}

例如, <link rel="stylesheet" href="{% static 'css/style.css' %}" /> 如果您将 style.css 文件保存在“css”目录中,请执行此操作。如果没有,那么直接写{% static 'style.css' %}


推荐阅读