2012-05-09 4 views
5

Angularjsとその$ httpモジュールをDjangoサーバーに使用してPOST AJAXリクエストを送信しています。ここに例があります:angularjsからdjangoにデータを送信する

問題は私がDjangoで得ることです。私が何を送信しても、データは常にQueryDictのキーであり、そのオブジェクトと値は常に空のリストです。

<QueryDict: {u'test data': [u'']}> 

私はヒントを持っていません。私は何が欠けていますか?

私はデフォルトのミドルウェアでのみ、ほとんどのデフォルトの作成されたDjangoアプリケーションを使用します。私はビューを作成し、URL設定でURLを設定しました。 Djangoのバージョンは1.3です。そして、私はangleの$ httpモジュールを設定して、Djangoを満足させるために常にcsrfトークンを含むヘッダーを送信しました。

答えて

6

私はdjangoがあなたがurlencodedフォームを送信していると思うと思います。キー=値&キー2 =値2 ...

あなたは試してみた場合:

$http({ 
    method: 'POST', 
    url: '/url/', 
    data: 'test=data' 
}) 

次のようにあなたが

<QueryDict: {u'test': [u'data']}> 

を取得する必要がありますあなたはいつも(生体の内容を)データを取得することができます:

request.body 

ご希望のものをお探しください。

+0

ありがとうございます!しかし、なぜあなたはジャンゴがそのURLエンコードされたデータを考えるのか説明できますか?それをカスタマイズすることが可能な場合は? – davekr

+1

request.GETとrequest.POSTには前処理されたキー/値データが含まれています - 生データ(JSONやプレーンテキストなど)を試したい場合は、request.raw_post_data –

7

これをjQueryのparam関数で解決しました。より洗練されたソリューションだと思います。

$http({ 
    method: 'POST', 
    url: '/url/', 
    data: $.param({test: data}) 
}) 

これは私が欲したように機能します。

関連する問題