【问题标题】:How do i create and use variables in django如何在 django 中创建和使用变量
【发布时间】:2021-01-12 18:23:55
【问题描述】:

Django 及其模板的新手。

我正在尝试在特定情况下设置一个变量,而我认为我无法做到的那部分,下面的代码并不是作为演示的确切条件。我坚持的部分是我如何创建变量名称,然后在其他地方使用该名称变量。例如在 div 或方法中或 html 文件中的任何其他位置,并使用不同的 <Script> 标签来运行方法并用于任何目的。

演示场景:

{% for row in table.rows %}
    {% if row == 2 %} 
       {% var name = row.name %}
    {% endif %}
{% endfor %} 

{% if name %} 
   <div>{{name}}</div>
{% endif %} 

我正在尝试实现的实际代码:

<script type="text/javascript">

   
    function map_init_basic(map, options) {
      var markerClusters = L.markerClusterGroup({ chunkedLoading: true });
      {% for row in table.rows %}
        
        var x = "{{ row.cells.x }}"
        var y = {{ row.cells.y }}
        
        var m = L.marker([y, x])
        m.bindPopup("{{row.cells.first_name}} {{row.cells.last_name}} <br>{{row.cells.chgd_add}}");
        m.on("click" , ()=>{
          //console.log(`${first_name} ${last_name}`)
          {% var first_name = {{row.cells.first_name}} %}
         
        })
       
         //changed row.cells.chgd_add to row.cells.Chgd_add to make sure its matching the table
        markerClusters.addLayer(m);
      {% endfor %}
      markerClusters.addTo(map);
    }

    {% if first_name %}
      console.log("{{first_name}}"); 
    {% endif %}

  </script>

【问题讨论】:

    标签: javascript django variables


    【解决方案1】:

    Django 模板旨在呈现 html,但您正在尝试呈现 javascript。它可以工作,但您尝试这样做的方式不是一个好习惯;很快您将无法维护您的代码。

    如果您想将数据直接从 python/django 传递到 javascript,一种可接受的方法是将数据放入字典中,将其转换为 json 字符串并在您的 javascript 中将其设置为 var。

    在视图中:

    data = dumps(some_dictionary) 
    return render(request, 'main/template.html', {'data': data})
    

    在模板中:

    <script> 
        var data = JSON.parse("{{data|escapejs}}");
    </script>
    

    https://docs.djangoproject.com/fr/3.1/ref/templates/builtins/#escapejs

    替代方案:您可以使用 django 生成具有数据属性的小部件,并在此小部件上运行 javascript 并做任何需要做的事情。

    【讨论】:

    • 谢谢,我感觉我做错了。我正在考虑在我的视图中定义变量,然后根据是否单击标记在模板中为变量分配一个值,然后在稍后在 Html 文件中分配该值后使用该值。我不确定这是否可行,或者我是否应该这样做。
    猜你喜欢
    • 1970-01-01
    • 2017-11-22
    • 2023-03-27
    • 2020-01-08
    • 2023-03-08
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多