单击地图后,将变量从模板传递到视图

时间:2019-12-19 17:16:37

标签: javascript python jquery django ajax

我正在学习Django,并且在一项任务上遇到了问题。 这不是一项完整的任务,仅是我自己了解该过程的过程(我尝试阅读文档,但这没有帮助)。 因此,我有一个地图(传单)和onMapClick函数。

# urls.py
urlpatterns = [path('map/', mapper)]

我创建了一个模型来保存模板中的数据

# models.py
from django.db import models

class MapHello(models.Model):
    p = models.CharField(max_length=250)

    def __str__(self):
        return self.p

我想在点击地图后(使用onMapClick(e)之后)将一些数据从模板传递到views.py并将其添加到数据库中。

据我了解,我应该使用AJAX。目前,我有一些不起作用的东西。我尝试使用AJAX:

# part of map_in.html
function onMapClick(e) {
            popup
                .setLatLng(e.latlng)
                .setContent("You clicked the map at " + e.latlng.toString())
                .openOn(mymap);
            var lat_lng = e.latlng

            $.ajax({
                url: "/map/",
                type: "get",
                data: {msg: "HELLO!!!!"},
                success: function(data) {
                    alert(data.result);;
                }});

所以我正在尝试发送do views.py消息“ HELLO !!!!”每次点击地图后。

# views.py
from django.shortcuts import render
from .models import MapHello

def mapper(request):
    if request.method == "GET":
        value = request.GET.get('msg')
        if value:
            MapHello.objects.create(p=value)
    return render(request, 'map_in.html')

但是,正如我所看到的,映射器没有从模板中获取任何数据。那么问题出在AJAX中吗?还是我应该以某种方式使用两个视图(一个仅用于呈现页面,第二个用于从模板获取和处理数据)?

也许我所有的代码是错误的:)我只是在学习。

对不起,我英语不好。

0 个答案:

没有答案