Django - javascript不会在html页面上加载

时间:2017-04-07 16:56:32

标签: javascript python css django static

我的Django网站不会加载javascript文件,但它对css部分也没问题,即使它们都在同一个Static文件夹中。

base.html文件:

<head>
    {% load static %}
    <meta charset="UTF-8">
    <link href="{% static 'login/css/bootstrap.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'login/css/bootstrap.min.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'login/css/bootstrap-theme.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'login/css/bootstrap-theme.min.css' %}" rel="stylesheet" type="text/css">
    <script src="{% static 'login/js/bootstrap.js' %}"></script>
    <script src="{% static 'login/js/bootstrap.min.js' %}"></script>

    <title>LOGIN</title>
</head>

settings.py:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    ]

以下是静态文件夹的路径:

/home/nikola/Desktop/GIA/static

我搜索了谷歌,解决方案非常通用,例如 urls.py python manage.py collectstatic (仅用于部署),以及没人帮忙。我一无所知。

什么似乎是问题?

2 个答案:

答案 0 :(得分:0)

正在加载js文件。我认为您还没有看到js插件正常工作,因为您还没有在head块中加载jquery文件。毕竟,bootstrap js插件依赖于jquery来工作。

此外,在大多数实践中,js文件应该在结束</body>标记之前加载到HTML文件的末尾,因为它们往往很大,并且您希望浏览器先加载较小的资源js文件被加载。因此,您的结构应该类似于:

<html>
    <head>
        <!-- meta stuff here -->
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <!-- jquery should always load before any other scripts -->
        <link href="css1.css" rel="stylesheet">
        <link href="css2.css" rel="stylesheet">
        ...
        ...
    </head>
    <body>
        ...
        ...
        <script type="text/javascript" src="{% static 'login/js/bootstrap.min.js' %}"></script>
    </body>
</html>

答案 1 :(得分:0)

  1. 确保settings.py
  2. 中的DEBUG = True
  3. 在每个应用程序中保留静态文件夹,在开发时,Django将在每个应用程序下搜索静态文件。只发布到生产ENV,使用 python manage.py collectstatic 的静态文件夹将在Web服务器配置中进行配置。 如果您使用的是nginx,etc / nginx / sites-enabled / config_file:

    root  /.project_home/django_root;
    
    location  /static/ {
               alias  /.project_home/django_root/static/;
    }