Javascript 单击映射后将变量从模板传递到视图

Javascript 单击映射后将变量从模板传递到视图,javascript,python,jquery,django,ajax,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(

我正在学习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
我想在单击map(使用onmaplick(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')
但是,正如我所看到的,mapper并没有从模板中获取任何数据。那么问题出在AJAX中了?或者我应该使用两个视图(一个用于呈现页面,另一个用于从模板获取和操作数据)

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


很抱歉我的英语不好。

因此,当您有一些代码片段不能一起工作时,您需要找到出现错误/意外行为的地方。正确的方法是使用调试器,首先您可以尝试
console.log()/print()
来缩小问题范围。1.
onmaclick
是否实际执行?2.您是否正在发送一个
httpget请求
(检查您编写
manage.py runserver
)3。
def mapper()
是否调用过,以及
if语句是否调用过
True
?对于python部分使用
print()
,对于
js
使用
console.log()
。希望这能帮助你解决一些问题bugs@hansTheFranz谢谢你的建议!1. '已执行onMapClick(它显示带有坐标的窗口);2.在终端中,我看到'GET/map/HTTP/1.1“200 1606';3.'def mapper()'被调用。我看到,该函数无法获取任何数据('print(value)'return None)。所以问题出在AJAX中?非常好,我很高兴听到这一点。您的问题似乎是
request.GET.GET('msg')
一种方法是
print(request.GET)
看看到底发生了什么,然后从这里开始工作。我猜是
value=request.GET['msg']
@hanseffranz,
print(request.GET)
return
。我试图使用你的代码,但我遇到了一个错误
异常类型:multivaluedictkeyrormat/map/Exception value:'msg'