2017-03-27 12 views
0

こんにちは、私はdjangoを使用することに新しいので、ごめんなさい。私は現在、私のviews.pyにファイルを送るためにajaxを使っています。私のジレンマは、辞書と2つの画像を含むformDataの両方を渡す必要があることです。これを私のビューにどのように渡すのですか?views.pyの画像と辞書にはどうすればアクセスできますか? pls help辞書と画像をajaxでDjangoのviews.pyに渡す方法

これまでデータを転送するために私が知っている概念は、ajaxとFormDataです。可能な限り、私は解決策

のためにそれらを使用して維持したいjQueryとAjaxの

    const form = new FormData(); 
        form.append('tradeimage', extractPhoto(tradeimage)); 
        form.append('receiveimage', extractPhoto(receiveimage)); 

       data = { 
        'tradename': tradename, 
        'receivename': receivename, 
        'description': description 
       }; 
       generateCSRFToken(); 
       $.ajax({ 
        url: '/submit_post/', 
        data: form, 
        type: "POST", 
        contentType: false, 
        processData: false, 
        success: function (data) { 
         console.log("success") 
        }, 
        error: function (data) { 
         console.log("somethings wrong with form") 
        } 
       }); 

views.py

def submit_post(request): 
if request.method != 'POST': 
    return redirect('/marketplace') 
post = Post() 
if 'tradeimage' and 'receiveimage' in request.FILES: 
    post.author = request.user 
    post.trade_item = request.FILES.get('tradeimage') 
    post.receive_item = request.FILES.get('tradeimage') 

#HOW DO I GET DATA FROM DICTIONARY? 

答えて

0

だけで、データを明確にしますサーバに送信するのは変数formであり、変数dataではありませんか?あなたが提供したコードから、ajaxデータには 'tradeimage'と 'receiveimage'しか含まれません。これに 'receiveimage'、 'receivename'、 'description'を含めることを意味しましたか?その場合は、それらをformに追加する必要があります。

とにかく、request.POST

+0

この投稿は、コメントとして置くことができます:

例は、1つの変数とJSONは、ここにあります。 –

+0

@juliansalas。私にそのようにする担当者がいたらどうなるでしょうか? – Bott0610

+0

こんにちは!私は私の問題を解決することができました。あなたはやや正しい。私は自分のデータをDataFormに追加した後、request.POST.get( 'tradeitem')によってサーバー側にアクセスしました。ありがとう、結構です! – Jason

0

にあるもの、サーバーチェックにそれは簡単です。ちょうど「辞書」の名前で。より良いアプローチはJSONを使用することです。同じアプローチは、ファイルではOK、request.FILES['name_of_the_picture']とだけです。

# your view 
def rate_quiz(request): 
    if request.is_ajax(): 
     quiz_id = request.POST.get('quiz_id', False) 
     answers = json.loads(request.POST.get('answers', False)) 


$.ajax({ 
     url: {% url 'rate_quiz' %}, 
     type: 'POST', 
     'data': { 
      'quiz_id': '1', 
      'answers': JSON.stringify(getAnswers(questions)), //or just manually created JSON 
      'csrfmiddlewaretoken': csrftoken, 
     }, 
     error: function (req, err) { 
      console.log('error'); 
     }, 
     success: function (result) { 
      if (result.success == true) { 
       console.log(result)); 
      } 
     } 
    }); 
関連する問題