我正在尝试使用客户端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装饰器无法解决错误。
答案 0 :(得分:1)
终于弄明白了。 How to POST dictionary from python script to django url?
原来我的网址错过了一个尾随的斜线。这就是我猜你总能得到的小事。