2017-05-02 42 views
0

我在Django CMS中有2個模型 - 一個地圖(具有名稱和圖像屬性)和一個位置,其中一個屬性是地圖。我希望在用戶更改Map時執行AJAX請求以獲取該項目的地圖詳細信息,以便我可以將Map圖像添加到該頁面以使用它進一步處理jQuery。但我對Django很陌生,我似乎無法弄清楚。我發現的任何東西似乎都沒有關係 - 因爲它討論了在前端表單上使用AJAX。如何在Django CMS中執行AJAX管理員

我有我的jQuery文件準備好去,但我不知道該怎麼把AJAX調用的URL,以及如何/在哪裏設置端點在Django。

回答

0

你的問題似乎與自定義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' %}"; 
+0

我想我很困惑,因爲我沒有模板文件。我只在管理員工作。我有我的.js文件,我正在做ajax調用。我怎樣才能得到我的.js文件中的Ajax網址?此外,我不明白的信息變量,爲什麼這是必要的網址? – pinksharpii

+0

'info',是一個使URL的名稱變得清晰的前綴,例如你的應用是'CMS',你的模型是'Map',url名變成'admin:cms_map_search_location',我不喜歡硬分配字符串所以我用'info'代替。 我不確定你的項目中的管理網址前綴,但我想你提到的ajax網址是: '/ admin/cms/map/search_location' –

+0

謝謝,我終於弄清楚了正確的URL 。並使用map_object = serializers.serialize('json',Map.objects.filter(id = map_id))獲取並返回我的地圖對象。 – pinksharpii