Python django html模板可以';找不到静态css和js文件

Python django html模板可以';找不到静态css和js文件,python,django,django-templates,django-staticfiles,Python,Django,Django Templates,Django Staticfiles,我有一个django项目,其结构如下: >vira >vira -__init.py -settings.py -urls.py -wsgi.py >vira_app >migrations >template -index.html >static

我有一个django项目,其结构如下:

>vira
     >vira
          -__init.py
          -settings.py
          -urls.py
          -wsgi.py
     >vira_app
          >migrations
          >template
                  -index.html
                  >static
                        >vira_app
                                >assets
                                      >css
                                      >js
                                      >vendor
                                          >aos
                                          >bootstrap
                                          >bootstrap-icons
                                          >isotope-layout
                                          >swiper
          -__init__.py
          -admin.py
          -apps.py
          -models.py
          -tests.py
          -urls.py
          -views.py
     -db.sqlite3
     -manage.py
我用过引导程序。index.html如下所示:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  {% load static %}
  <link href="{% static 'vira_app/assets/vendor/aos/aos.css' %}" rel="stylesheet">
  <link href="{% static 'vira_app/assets/vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
  <link href="{% static 'vira_app/assets/vendor/bootstrap-icons/bootstrap-icons.css' %}" rel="stylesheet">
  <link href="{% static 'vira_app/assets/vendor/swiper/swiper-bundle.min.css' %}" rel="stylesheet">
  {% load static %}
  <link href="{% static 'vira_app/assets/css/style.css' %}" rel="stylesheet">
</head>

<body>
  <main id="main">
        <div id="portfolio-grid" class="row no-gutter" data-aos="fade-up" data-aos-delay="200">
          {% if catalogue_list %}
            {% for Catalogue in catalogue_list %}
              <div class="item web col-sm-6 col-md-4 col-lg-4 mb-4">
                <a href="{{ Catalogue.link }}" class="item-wrap fancybox">
                  <div class="work-info">
                    <h3>{{ Catalogue.title }}</h3>
                    <span>{{ Catalogue.source }}</span>
                  </div>
                  <img class="img-fluid" src="{{ Catalogue.image }}">
                </a>
              </div>
            {% endfor %}
          {% endif %}
        </div>
      </div>
  </main>
  <a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
  <script src="assets/vendor/aos/aos.js"></script>
  <script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
  <script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
  <script src="assets/vendor/php-email-form/validate.js"></script>
  <script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
  <script src="assets/js/main.js"></script>
</body>
</html>
当我运行服务器并转到index.html时,从db检索到的数据显示良好,但没有任何样式

我尝试了一些解决方案,检查每个静态url,但不起作用


事实上,css、js和供应商不适用。有什么问题吗?

某些设置被误用:

STATIC\u URL='/STATIC/'
-这很好

STATIC\u ROOT='/vira\u app/template'
-不,这应该是一些与项目结构不相关的文件夹。最后,在prod上,它可以是CDN URL,也可以是不同服务器上的文件夹。因此,首先尝试将其更改为类似于
STATIC\u ROOT=os.path.join(BASE\u DIR,'STATIC')

如注释中所述,您可能需要定义一个文件夹列表,其中必须通过
collectstatic
命令将from静态文件收集到。这意味着您可以在不同的位置拥有包含静态文件的多个子文件夹。但是,您需要收集所有这些文件以部署到某个地方
STATICFILES\u DIRS
+
collectstatic
将为您收集所有这些文件到给定的
STATIC\u ROOT
(此文件夹的内容应该部署到某个地方,例如CDN)

注意,默认的一组已包含
AppDirectoriesFinder
,它将自动查找任何项目应用程序中的所有
静态
子文件夹。这意味着,如果您将
static
子文件夹从
templates
移动到
vira\u app
根目录,则无需在
STATICFILES\u DIRS
中提及它

因此:

  • STATIC\u ROOT
    不应指向任何
    templates
    子文件夹,请将其更改为更“全局”的文件夹
  • STATICFILES\u DIRS
    应该链接到您现在保存静态文件的文件夹,或者应该将此文件夹移动到
    vira\u app
    的根目录,让
    collectstatic
    找到它
  • 在查看呈现页面中的样式和脚本之前,必须先运行
    collectstatic
  • 运行
    collectstatic
    后,所有静态文件必须保持在
    static\u ROOT
    中,这样django将能够将
    static\u URL
    之后的相对URL映射到
    static\u ROOT
    之后的相对路径,并将加载这些文件
PS

注意,在显示的模板中,某些静态文件以错误的方式链接:

 <script src="assets/vendor/aos/aos.js"></script>


这也应该更改为
{%static…

显示您的设置。py您是否配置了static\u URL或static\u ROOT?阅读此内容请更新问题,而不是发布详细信息来评论此尝试
static\u URL='/static/'STATICFILES\u DIRS=(os.path.join(BASE\u DIR,'static'),
 <script src="assets/vendor/aos/aos.js"></script>