2017-05-02 8 views
0

Django CMSには2つのモデルがあります。マップには名前と画像属性があり、属性の1つにマップがあります。ユーザーがマップを変更したときにAJAXリクエストを実行してそのアイテムのマップの詳細を取得し、Mapイメージをページに追加してjQuery処理を追加したいとします。しかし、私はDjangoには新しく、私はそれを理解できないようです。私が見つけたものは無関係のようです - フロントエンドフォームでAJAXを使うことについて話しています。Django CMS管理者のAJAXのやり方

私は自分のjQueryファイルを用意する準備ができていますが、Ajax呼び出しのURLとDjangoでエンドポイントを設定する方法はどこに置くべきかわかりません。

答えて

0

あなたの質問はカスタムDjango admin urlに関連しているようです。 まず、場所のエンドポイントを検索するためのURLのポイントを定義し、場所

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) 

次に、テンプレート・ファイル内のどこかを検索するエンドポイントを提供するために、あなたのMAPADMINを更新します。そのURLを使用して、地図が変更されたら位置データ を取得します。

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

私はテンプレートファイルを持っていないので、私は混乱していると思います。私は管理者だけで働いています。私は自分の.jsファイルを持っています。ここで私はajax呼び出しを行っています。どのようにして私の.jsファイルにそのajax URLを取得できますか?また、私は情報変数を理解していないとなぜURLのために必要ですか? – pinksharpii

+0

'info'は、URLの名前を明確にする接頭辞です。たとえば、アプリケーションが' CMS'であり、モデルが 'Map'で、URL名が' admin:cms_map_search_location'になります。代わりに 'info'を使用しました。 あなたのプロジェクトの管理者用URLプレフィックスがわかりませんが、あなたが言及したajax URLは次のとおりです: '/ admin/cms/map/search_location' –

+0

ありがとう、私は最終的に正しいURLを知ることができました。 map_object = serializers.serialize( 'json'、Map.objects.filter(id = map_id))を使ってマップオブジェクトを取得して返す – pinksharpii

関連する問題