如何在Django CMS Admin中执行AJAX

时间:2017-05-02 21:22:37

标签: ajax django django-admin

我在Django CMS中有2个模型 - 一个Map(具有名称和图像属性)和一个Location,其中一个属性是Map。我希望,当用户更改Map时,执行AJAX请求以获取该项的地图详细信息,以便我可以将Map图像添加到页面以使用它进行进一步的jQuery处理。但我是Django的新手,我似乎无法弄明白。我找到的任何东西似乎都没有关系 - 因为它谈到了在前端表单上使用AJAX。

我准备好了我的jQuery文件,但我不知道如何为AJAX调用的URL以及在Django中如何/在何处设置端点。

1 个答案:

答案 0 :(得分:1)

您的问题似乎与自定义Django管理员网址有关。 首先,更新MapAdmin以提供搜索位置的端点

from django.contrib import admin
from django.http import JsonResponse

class MapAdmin(admin.ModelAdmin):
    def get_urls(self):
        admin_view = self.admin_site.admin_view
        info = self.model._meta.app_label, self.model._meta.model_name
        urls = [
            url(r'^search_location$', admin_view(self.search_location), name=("%s_%s_search_location" % (info))),
        ]
        return urls + super(VideoAdmin, self).get_urls()

    def search_location(self, request, *args, **kwargs):
        map = request.GET.get('map')
        # Do something with map param to get location.
        # Set safe=False if location_data is an array.
        return JsonResponse(["""..location_data"""], safe=False)

接下来,在模板文件中的某个位置,定义搜索位置端点的URL点。并使用该URL来获取位置数据 一旦地图改变了。

var searchLocationUrl = "{% url 'admin:appName_mapModel_search_location' %}";