Django:是否有可能创建Json并将其从视图发送到另一台服务器?

时间:2013-03-28 01:08:52

标签: ajax django json django-views query-string

如果我有一个这样的链接<a href="/account/user">Get User Data</a>指向我自己的服务器内的视图,有没有办法发送一个json对象(也许只是带有ajax?)到另一个外部服务器并检索答案?像这样:

from django.shortcuts import render

def profile(request):
   #send a json object to another server like http://www.myotherserver.com/user
   #get the answer and process it
   return render(request, 'accounts/profile.html' , 
                {'profile_user': data_from_the_external_server})

以上我可以用jquery-ajax实现它,但我只是想知道我是否可以这样做...

提前致谢。

2 个答案:

答案 0 :(得分:1)

当然可以。为什么不可能?

如果没有必要,请不要在AJAX中编写代码。

你需要做两件事,你需要准备JSon发送,然后你需要将它发送到你想要的API:

  1. 查看“simplejson”以创建要发送的json数据。
  2. 查看“urllib”以使用Python向另一台服务器发送请求(例如:How to send a POST request using django?
  3. 也不要在你的视野中直截了当。为它创建一个新类。所以在你看来你会有类似的东西:

    def profile(request):
        # instantiate your service here (better with DI)
    
        profile_user = my_service.get_profile_user()
        return render(
            request, 
            'accounts/profile.html' , 
            {
                'profile_user': profile_user
            }
        )
    

答案 1 :(得分:0)

如果您需要将HTTP数据(通过POST或GET)发送到另一台服务器并从视图中接收结果,您可以使用Python的urllib2库。但是,有一个更简单的第三方库名为Requests,可以为您处理此任务。