Reputation: 65
I have a django problem. I want to send datas which are from browser or business logic on my django server to another django server or just the same server but different port, to handle the request. How can I do? I have tried to achieve using socket,but it seems no working.
Following is my code: accept the client's request: def im(request): userp = None try: userp = UserProfile.objects.get(user = request.user) except: pass if not userp: return HttpResponse("error") print '111' if request.method == "GET": import json msg = json.loads(request.GET.get('msg')) try: msg['from_id'] = userp.id if msg.get('type', '') == 'sync': #页面同步消息 msg['to_id'] = userp.id push_msg(msg) return HttpResponse("success") except: return HttpResponse("error") #return HttpResponseRedirect("http://127.0.0.1:9000/on_message") return HttpResponse("error") helper.py:push_msg: def push_msg(msg): print '111' params = str(msg) headers = {"Content-type":"application/x-www-form-urlencoded", "Accept":"text/plain"} conn = httplib.HTTPConnection("http://127.0.0.1:9000/push_msg/") conn.request("POST", "/cgi-bin/query", params, headers) url(r'^push_msg/$', 'chat.events.on_message') events.py:on_message def on_message(request): msg = request.POST.get('msg') msg = eval(msg) try: print 'handle messages' from_id = int(msg['from_id']) to_id = int(msg['to_id']) user_to = UserProfile.objects.get(id = msg['to_id']) django_socketio.broadcast_channel(msg, user_to.channel) if msg.get('type', '') == 'chat': ct = Chat.objects.send_msg(from_id=from_id,to_id=to_id,content=data['content'],type=1) ct.read = 1 ct.save() except: pass
Upvotes: 4
Views: 13103
Reputation: 474
use python requests module to do this requests has more features then httplib2 and it is very easy to use http://docs.python-requests.org/
Upvotes: 2
Reputation: 1207
I have used httplib2 to accomplish something similar. From the httplib2 documentation try:
import httplib2
import urllib
data = {'name': 'fred', 'address': '123 shady lane'}
body = urllib.urlencode(data)
h = httplib2.Http()
resp, content = h.request("http://example.com", method="POST", body=body)
You should then be able to handle the POST in your second django server, and return the appropriate results to the first django server.
Upvotes: 0