我是 Python 和 Django 的新手,我正在尝试通过 http post 将数据传递到一个简单的 Web 应用程序。我浏览了 Django 教程,对所教的内容有一个不错的理解,但我并没有完全过滤掉 urls.py 正则表达式。我已成功使用 urlopen() 作为 http get。使用它来发布并不是那么成功。好像我的应用程序 urls.py(不是项目 urls.py)不允许 POST 访问我的应用程序 views.py。最终,我想通过 POST 获取我被动的数据并将其返回到我的响应中。这是我所拥有的:
我的项目 urls.py:
urlpatterns = patterns('',
url(r'^timeapp/', include('timeapp.urls')),
url(r'^datasink/', include('datasink.urls')),
url(r'^admin/', include(admin.site.urls)),
)
数据接收器/ urls.py:
urlpatterns = patterns('',
(r'^$', views.index),
)
数据接收器/views.py
def index(request):
if request.method == 'GET':
return HttpResponse("This was a GET")
else:
return HttpResponse("This was a not a GET ... POST?")
客户端
from urllib2 import Request, urlopen, URLError, build_opener, HTTPHandler
import urllib
url = "http://127.0.0.1:8080/datasink/"
data = {'name':'joe'}
encodedData = urllib.urlencode(data)
req = Request(url)
req.add_data(encodedData)
try:
response = urlopen(req)
print "We received the following response from our httpREQ: " +response.read()
print "The response.geturl(): " +response.geturl()
except URLError as e:
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ' +str(e.reason) +str(e.code)
elif hasattr(e, 'code'):
print 'The server couldn\'t fulfill the request.'
print 'Error code: ' + str(e.code)
else:
pass
服务器端错误:
异常 AttributeError: AttributeError("'_DummyThread' 对象没有属性 ' Thread _block'",) 被忽略 [02/Apr/2013 05:15:57] "POST /datasink HTTP/1.1" 500 54048
客户端消息:
我们未能到达服务器。原因:内部服务器错误
任何指导将不胜感激。我一直在尝试各种正则表达式……不走运。