根据 django 标签动态更改的特定传单层样式

specific leaflet layer style to change dynamically based on django tags

我的药水 html 代码做风格

<script type="text/javascript"> 
         function our_Layers (map, options){
            var datasets = new L.GeoJSON.AJAX("{% url 'owner' %}",{

                style: function colors(feature){                    
                    switch(feature.properties.lr){                        
                        case "{{LR}}":
                            return{
                                color: 'red'
                            };
                        break
                    }
                },

                onEachFeature: function(feature, layer){
                    //layer.bindPopup(feature.properties.lr.toString());
                    layer.bindPopup('<strong>LR No.: </strong>'+ feature.properties.lr.toString()
                   );
                }
            });
            datasets.addTo(map); 

         }
    </script>

    {% leaflet_map "parcels" callback="window.our_Layers" %}

我在 django 中的视图

def Usermap(request):
    plots1 = request.user.person.Persona.all()

    for Registration in plots1:
        LR=(Registration.parcels.lr)            
    context = {'plots':plots1,'LR':LR}
    return render(request, 'Cadastre/Usermap.html', context)

在 django 中使用 for 循环向我显示可用的 lr,它是 3,但我不能在传单函数中使用 django for 循环标签任何帮助

我找到了绕过它的方法..首先我在 Django 视图中执行 for 循环并将我的结果附加到列表中。 示例

def Usermap(request):
    plots1 = request.user.person.Persona.all()
    LR =[]

    for Registration in plots1:
        LR.append(Registration.parcels.lr)            
    context = {'plots':plots1,'LR':LR}
    return render(request, 'Cadastre/Usermap.html', context)

然后在 html 中执行另一个循环以访问列表项并使用它动态设置我的地图样式。 例子

<script type="text/javascript">
datasets = new L.GeoJSON.AJAX("{% url 'Plots' %}",{
 style: function colors(feature){
     var LRS = {{LR|safe}};
     var x;
     for (x of LRS){                    
         switch(feature.properties.lr){                        
            case x:
                 return{
                    color: 'red'
                 };
            break
         }
      }                        
 },
    onEachFeature: onEachFeature
}).addTo(map);
</script>

我希望这能帮助遇到同样问题的人,因为没有其他答案谢谢。