收集POST数据,处理它并将该数据发布到外部URL

时间:2011-11-07 02:41:49

标签: django django-views

我正在尝试实施数据处理模块。

情景是,

  1. 首先,用户将发布一些数据。
  2. 需要处理用户发布的数据,并且需要在此处添加更多信息
  3. 此处理后的POST数据应该在没有用户干预的情况下发送到外部URL。
  4. 外部URL只接受POST请求。

    请建议我将此POST数据发送到外部网址的方法。

    更新

    根据建议,我开始使用请求。

    在我收集初始POST数据的视图中,我正在使用用户发布的数据(处理后)编译另一个数据对象,并向对象添加更多数据并按照下面的方式执行发布请求

    req = requests.post(post_url, data=post_obj)
    

    返回的status_code是200 但是数据(post_obj)似乎没有发送到post_url。 post_url提示它没有收到POST数据。

    当我检查req对象时,

    req.request.data似乎有post_obj信息,而req.request.url有post_url

    req.url有redirect_url,提示post_url没有收到任何数据。

    我的问题是,

    如何实际发布数据? 需要在视图中返回的对象是什么?

    如果我发布数据的方式(requests.post方法)是错误的。请以适当的方式建议我。

    注意:将数据发布到post_url后,它将被重定向到另一个页面。

2 个答案:

答案 0 :(得分:2)

使用Urllib2mechaniserequests(所有人都使用urllib2和httplib中内置的pythons)或pycurl(使用libcurl)向外部发帖资源。

请求是最容易使用的,机械化非常适合填写表单和编程,如浏览器,urllib2是底层库,所以知道并且pycurl(imo)是最后的手段,因为没有特别维护

您应该考虑使用队列来处理服务器 - >第三方步骤,然后异步向用户报告任务已完成,否则如果您的第三方应用程序需要很长时间才能响应,您可能会面临计划连接时间的问题。

答案 1 :(得分:0)

您可以使用标准库urllib2进行第二次POST。

我也听说过有关requests library的好消息,它比urllib2更容易使用。