3

クライアント側の 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 デコレータはエラーを解決できませんでした。

4

1 に答える 1