Неперехваченная ошибка типа: L.GeometryField не является конструктором django-листовки

#javascript #ajax #django-leaflet

#javascript #ajax #django-leaflet

Вопрос:

Я пытаюсь опубликовать геолокацию в базе данных postgres в Django-leaflet. Я сталкиваюсь Uncaught TypeError:L.GeometryField is not a constructor . Я использую ajax

     <script>
      var csrftoken = "{{ csrf_token }}";

      function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
      }

      $.ajaxSetup({
        beforeSend: function(xhr, settings) {
          if (!csrfSafeMethod(settings.type) amp;amp; !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
          }
        }
      });

       
  </script>
{% endblock %}
<strong>ያሉበት ቦታ|Location ፡</strong>

<p id="demo" onload="getLocation()"></p>


<form method="post" >
  {% csrf_token %}
  {{ form.as_p }}
</form>
<script type="text/javascript">

      var x=document.getElementById("demo").addEventListener("change",save_data);       

       function getLocation()
         {
        if (navigator.geolocation)
        {
        navigator.geolocation.getCurrentPosition(showPosition);
        }
        else{x.innerHTML="Geolocation is not supported by this browser.";}
        }
        function showPosition(position)
        {
        x.innerHTML="Latitude: "   position.coords.latitude   
        "<br>Longitude: "   position.coords.longitude;

        }
        function save_data(){
          var token=$("{{ csrf_token }}");
          var pos =$("#demo").val();
          console.log("THIS IS:",x);
          $.ajax({
            type:"POST",
            headers:{"X-CSRFToken":token},
            url: "{% url 'shop:user-create' %}",
            data:{pos:pos},

          });
        } 
      
</script>
 

Ошибка:

 <script type="text/javascript">
    var geodjango_id_user_loc = {};
    geodjango_id_user_loc.fieldid = 'id_user_loc';
    geodjango_id_user_loc.modifiable = true;
    geodjango_id_user_loc.geom_type = 'Point';
    geodjango_id_user_loc.srid = 4326;
    

    function id_user_loc_map_callback(map, options) {
        geodjango_id_user_loc.store_class = L.FieldStore;
        (new L.GeometryField(geodjango_id_user_loc)).addTo(map);
        
    };

    
</script>
 

Ответ №1:

Я столкнулся с этой же проблемой, и она была решена путем добавления plugins="forms" к обоим {% leaflet_js %} и {% leaflet_css %}