如何将数据从一个Django应用程序发送到另一个应用程序?

时间:2012-08-22 12:10:25

标签: python html django

这是我的问题。我需要将一个表单从一个Django应用程序发送到另一个(在不同的机器上)。考虑到换行符,这就是我发布数据的方式。

<form id="codeid" method="post" enctype="application/x-www-form-urlencoded" name="code" action="192.168.56.2:8000/api/comp/">
    <input id="textarea_1" name="content" cols="80" rows="15"></input>
    <input id="thebutton" type="button" value="Submit"  onclick="document.forms.codeid.submit();" /> 
</form>

表单操作,即action="192.168.56.2:8000/api/comp/由url.py处理:

urlpatterns = patterns('',
    (r'^time/$', current_datetime),
    (r'^time/192.168.56.2:8000/api/comp/$', comp2),
)
urlpatterns += staticfiles_urlpatterns()

在views.py中,我不知道要写什么来将表单发送到其他应用程序。我尝试从表单中提取数据并使用以下URL发送它:

data=request.POST['content']
redirect('http://192.168.56.2:8000/api/comp/'+data)
url = urllib2.urlopen('http://192.168.56.2:8000/api/comp/'+data)
tml = url.read()

但我丢失了线路。

1 个答案:

答案 0 :(得分:0)

我认为您可以以更好的方式发送数据,例如使用HTML表单直接将数据发送到目标服务器等。

无论如何,将数据与urllib2.urlopen行中的网址混合的方法非常糟糕,当然你会丢失换行符和许多其他字符。您应该在将数据添加到URL之前对其进行编码,如下所示:

encoded_data = urllib.urlencode({'content': 'Hello,\nIt is a sample content!'})
url = urllib2.urlopen('http://192.168.56.2:8000/api/comp/?' + encoded_data)