在外部 js 文件中使用 python 变量。姜戈

Lle*_*ims 2 javascript django

我正在 Django 项目中工作,我想让它保持整洁。因此我决定(除其他外)css styles在. 我没有问题,我在静态文件夹中创建了一个 css 文件夹,并将所有内容保存在里面,它工作得很好。js scriptshtml templatescss stylescss files

当我想js filespython来自views.py. 因为它不认识他们。如何将此变量导入到js外部文件中?

现在我有了这个,但它不起作用。

主要.html

{% load static %}

<!DOCTYPE html>
<html lang="es">
    <head>
        <title> {% block title%}{% endblock%} </title>

        <meta charset="utf-8">

        <link rel="stylesheet" type="text/css" href="{% static "/css/main.css" %}">
        <link rel="stylesheet" type="text/css" href="{% static "/css/data.css" %}">

    </head>
    <body>
        <h1> WELCOME HOME </h1>
        <p>{{Data}}</p>

        /* This script has to be in a external js file. HERE WORKS
        <script>
            alert('{{Data}}');
        </script>*/

        {% block content %}{% endblock%}

        <script type="text/javascript" src="{% static "/js/data.js" %}"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

数据.js

alert('{{Data}}')
//alert({{Data}}) ERROR
Run Code Online (Sandbox Code Playgroud)

如果警报没有 python 变量,那么alert("Hello world")它效果很好,但是当我传递 Python 变量时,它会显示“{{Data}}”。

谢谢你!

Kab*_*ali 6

我们可以通过两种方式做到这一点..

1.

在您的 html 文件中添加以下行

{{ value|json_script:"mydata" }}
Run Code Online (Sandbox Code Playgroud)

并将上述值获取到 data.js 文件,如下所示

var value = JSON.parse(document.getElementById('mydata').textContent);
Run Code Online (Sandbox Code Playgroud)

2.

在该行的下面添加以下标签

   <script type="text/javascript">
       var data= '{{ data }}' 
   </script>
   <script type="text/javascript" src="{% static '/js/token.js' %}"> 
   </script>
Run Code Online (Sandbox Code Playgroud)

你可以像往常一样在 data.js 文件中获取它,如下所示的 javascript 变量

 alert(data);
Run Code Online (Sandbox Code Playgroud)