クライアント側の Python スクリプトを使用して Django サーバーに接続しようとしています。現在、ビューに接続して HttpResponse を取得しようとしています。以下は正常に動作します
import urllib2
import urllib
url = "http://localhost:8000/minion/serve"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
html = response.read()
print html
ただし、次のように変更すると
import urllib2
import urllib
url = "http://localhost:8000/minion/serve"
values = {'name': 'Bob'}
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
html = response.read()
print html
私は得るurllib2.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
。ここで何か間違ったことをしていますか?私が従おうとしていたチュートリアルは、http://techmalt.com/?p=212 http://docs.python.org/2/howto/urllib2.htmlです。
編集:That1Guyの提案に従って、次の変更を試みました(他の行は同じままです)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request, data)
これにより、以前と同じエラー メッセージが返されました。
編集:表示しているページを変更するとうまくいくように見えるので、クライアント側のスクリプトにエラーはありません。その啓示に照らして、アクセスされているサーバー側のビューは次のとおりです。
def serve(request):
return HttpResponse("You've been served!")
ご覧のとおり、非常に簡単です。
編集: csrf トークンの欠落が原因で内部エラーが発生する可能性があるかどうかをテストしましたが、csrf_exempt デコレータはエラーを解決できませんでした。