2017-07-31 10 views
0

私は安心して新人です。私はいくつかの変数を "GET"で応答するビューセットに送信したいと思います。すべてのデータが、私はどのように私は "get_ajax_variable()"と呼ばれる新しい関数を作成するいくつかのフィルタリングデータに応答するビューセット内の特定の関数に変数を送信する方法を理解していないどのように私は変数を 特定の機能? は事前に感謝しています!Djangoで、AjaxがRestful Apiで変数を送信する

これはこれはこれは私のアヤックスである私のビューセット

class CompanyViewSet(viewsets.ModelViewSet): 
    queryset = Company.objects.all() 
    serializer_class = CompanySerializer 

である私のシリアライザ

class CompanySerializer(serializers.HyperlinkedModelSerializer): 
    Brand = serializers.ReadOnlyField(source='brand_set.all', read_only=True) 

    class Meta: 
     model = Company 
     fields = data_export_setting.Company_form_stand 

    def create(self, validated_data): 
     validated_data['owner'] = self.context['request'].user 
     return Company.objects.create(**validated_data) 

で、 "showTable(JSON)" の機能は、私のcompany.htmlをリロードする機能です

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#ab').click(function() { 
      var filter_2 = $("#insert_value").val();//for City 
      var filter_1 = $("#insert_value_1").val();// for Company type 
      var filter = $('#filter').val();//for search 
      $.ajax({ 
       type: "GET", 
       data: {filter:filter, filter_1_value:filter_1,insert_value:insert_value}, 
       url: "https://horizon-retail-sam-leon-ghibli.c9users.io/restful_api/companyviewset/?format=json", 
       cache: false, 
       dataType: "json", 
       contentType : 'application/json', 
       success: function (json) { 
       $('#ajax_search').empty(); 
        showTable(json); 
        }, 
       error: function() { 
        alert("false"); 
       } 
      }); 
     }); 



    }); 

答えて

0

はい!私はこの問題を解決する必要があり、以下は私のステップの最も重要なステップは、テンプレート内のビューセット のクラスで機能get_queryset(self):を上書きすることである で、Ajaxは以下のとおりである:ジャンゴの設定で

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#ab').click(function() { 
      var filter_2 = $("#insert_value").val();//for City 
      var filter_1 = $("#insert_value_1").val();// for Company type 
      var filter = $('#filter').val();//for search 
      $.ajax({ 
       type: "GET", 
       //data: {filter:filter, filter_1_value:filter_1,insert_value:insert_value}, 
      url:"You_own_url"+format=json&a="+filter+"&b="+filter_1+"&c="+filter_2, 
       cache: false, 
       dataType: "json", 
       contentType : 'application/json', 
       success: function (json) { 
       $('#ajax_search').empty(); 
        showTable(json); 
        }, 
       error: function() { 
        alert("false"); 
       } 
      }); 
     }); 

、あなたは次のようにURLを設定する必要があり、ジャンゴのURLでREST_FRAMEWORK

として
'DEFAULT_FILTER_BACKENDS':('django_filters.rest_framework.DjangoFilterBackend',), 

を設定する必要があります。

router.register(r'companysearch',CompanyViewSet) 
ビューセットで

が、私はget_querysetのすべての機能を引っ張っていなかった、次のように設定する必要があります。

serializer_class = CompanySerializer 
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,) 
def get_queryset(self):# how to define the null and None 
    filter_1 = self.request.query_params.get('a')#, None) 
    filter_company_type = self.request.query_params.get('b', None)# company_type 
    filter_city_type = self.request.query_params.get('c', None) 
    .... 

を、あなたは正しく結果を得ることができ、

0

これはGETのため、なぜあなたはURLパラメータとして送信しませんか?

+0

を助け感謝の誰もが、あなたは、このように意味ですか? "url:" https://horizo​​n-retail-sam-leon-ghibli.c9users.io/restful_api/companyviewset/?format=json"&a= filter_2&b = filter_1&c = filter " –

0

私はコメントとして回答する必要がありましたが、私はそれを実行するための十分な特権がありません。だから私と一緒に耐えてください。

質問に入れたコードとタグでDjango Rest Framework(DRF)を使用しているとします。

基本的には、このurl: "https://horizon-retail-sam-leon-ghibli.c9users.io/restful_api/companyviewset/?format=json",は、データと共にREST APIサーバー(セットアップのDRF)にリクエストを送信できます。そして、djangoのurls.pyはあなたが送った値を知り、特定のビュー/ビューセット(たとえば、あなたの例のCompanyViewSet)にあなたを導きます。

ビューア/ビューセットがシリアライザとどのように機能するかについては、http://www.django-rest-framework.org/api-guide/serializers/http://www.django-rest-framework.org/tutorial/1-serialization/を参照してください。そして、これで十分です。ビュー/ビューセットからシリアライザにデータがどのように転送されたかはわかりません。もし誰かが説明できれば素晴らしいだろう。しかし、シリアライザでは、データはvalidated_dataにあるはずです。

このビュー/ビューセットでは、POST用のデータはrequest.data、通常はquery.paramsですが、これは実際にajax呼び出しをどのように構築するかによって異なります。

POSTとGETの違いを知ることが重要です。あなたは単にそれをGoogleにすることができます。

HTH。

+0

ありがとう〜私はあなたからたくさんのことを学びましたコメント〜ありがとう –

関連する問題