模板标签';url';如果使用外部javascript,则不起作用

模板标签';url';如果使用外部javascript,则不起作用,javascript,google-maps-api-3,python-3.7,django-2.2,Javascript,Google Maps Api 3,Python 3.7,Django 2.2,我正在使用“谷歌地图api”创建django程序。 “mapinit(json数据)”是从“map.js”读取的 <body onload="mapinit('{{ data }}')"> <!-- create a map area with shop information --> <div class="wrapper"> <div id="shopinfomation"></div>

我正在使用“谷歌地图api”创建django程序。
“mapinit(json数据)”是从“map.js”读取的

<body onload="mapinit('{{ data }}')">

    <!-- create a map area with shop information -->
    <div class="wrapper">
        <div id="shopinfomation"></div>
        <div id="map_canvas1" style="width: 500px; height: 500px"></div>
    </div>

    <!-- post action from html is ok! -->
    <h3>category 1</h3>
    <form class="specific_form" action="{% url 'index_search' '1A' %}" method="POST">
        {% csrf_token %}
        <input type="submit" class="btn-flat-border" value="ramen" /> search ramen shops
    </form>
我想用这个

console.log("{% url 'index_search' '2' %}")
我想要

/gmarker/search/2
但是chrome的输出是。。。来的是同一个

{% url 'index_search' '2' %}
urlpatterns=[
路径(“”,views.index,name='index'),
路径('search/',views.index,name='index_search'),
路径('search/detail/',views.searchdetail,name='detail\u search'),
路径('result/',views.index,name='index_result'),
]

外部javascript无法读取模板标记???

是的,外部javascript无法使用模板变量。您需要做的是从内部javascript发送数据,比如在mymap.html中

<script>
    var TemplateVar = {
        my_url: "{% url 'index_search' '2' %}"
    }
</script>
<script src="{% static 'js/map.js' %}"></script>

额外:您可能需要转义变量以防止某些攻击

是的,外部javascript不能使用模板变量。您需要做的是从内部javascript发送数据,比如在mymap.html中

<script>
    var TemplateVar = {
        my_url: "{% url 'index_search' '2' %}"
    }
</script>
<script src="{% static 'js/map.js' %}"></script>
    my_url = TemplateVar.my_url;      // Taking json attribute from script of mymap.html
    console.log(my_url);              // You should get what you are expecting
额外:您可能需要转义变量以防止某些攻击

    my_url = TemplateVar.my_url;      // Taking json attribute from script of mymap.html
    console.log(my_url);              // You should get what you are expecting