私はDjangoで奇妙なことを経験しています、これが私のviews.pyです:
def api(request):
return HttpResponse("%s %s" % (request.method,request.raw_post_data))
今私はPOSTMAN(グーグルクロームのための小さなアプリ)でHTTP POSTを作ります。
POSTMANを設定して、rawフィールドに「test」を指定してPOSTリクエストを作成します。
Djangoは私に3つの異なるものを返します(ランダム):
いつかDjangoは 'GET'を返すときもあれば、まったく何もしないときもあります。
AttributeError at /
'WSGIRequest' object has no attribute 'raw_post_data'
Request Method: GET
Request URL: https://api.mywebsiteurl.com/
Django Version: 1.6.2
Exception Type: AttributeError
Exception Value:
'WSGIRequest' object has no attribute 'raw_post_data'
Exception Location: /home/spice_dj/spice/views.py in api, line 17
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
['/usr/local/lib/python2.7/dist-packages/South-0.8.4-py2.7.Egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/home/spice_dj']
Server time: Wed, 12 Mar 2014 22:51:11 -0400
明確にDjangoリクエストを行うと、なぜPOSTは 'GET'を返すのですか?
なぜそのエラーが返されるのですか?
Rawフィールドで設定した「テスト」が返されないのはなぜですか?
Django 1.6の非推奨タイムライン によると:
1.4では、属性
HttpRequest.raw_post_data
の名前がHttpRequest.body
に変更されました。下位互換性は削除されます–HttpRequest.raw_post_data
は機能しなくなります。
動機は 関連チケット で説明されています:
request.raw_post_dat
aは悪い名前です。特にPOST
とは何の関係もありません。これは、HTTPリクエストの本体にすぎません。これはユーザーを混乱させ、DjangoはHTTPの仕組みを理解していないように見えます。名前をrequest.body
に変更して、非推奨プロセスを開始する必要があります。
request.body
を使用します:
def api(request):
return HttpResponse("%s %s" % (request.method, request.body))
お役に立てば幸いです。