【发布时间】:2012-03-03 01:28:42
【问题描述】:
我正在尝试将 POST 数据从 python 脚本发送到 url。代码如下:
def createperson(self,name=None):
SERVER_BASE_ADDR = 'http://localhost:8000/'
postdata = urllib.urlencode({'name':name})
req = urllib2.Request(SERVER_BASE_ADDR + 'people/add')
fd = urllib2.urlopen(req,postdata)
return name
但这会返回
HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
在网址上添加一个人很好。有什么想法吗?
编辑
服务器端使用 django 装饰器来处理 POST 和 GET。
@require_http_methods(["GET", "POST"])
def add(request):
if request.method == "POST":
#do stuff with post data
上面的python代码不是和在html模板上提交表单一样吗?如果它相同,那么处理程序不应该以相同的方式处理它吗?
谢谢
通过使用解决:
c = urllib2.build_opener()
postdata = urllib.urlencode({'name':name})
r = c.open(url,postdata)
一种不同的方法,但可以完成工作。感谢您的所有回答。
【问题讨论】:
-
你用什么来处理服务器端的请求?它是否需要尾部斜杠 / ?您的服务器是否向您提供任何反馈,说明为什么请求失败?