How do you get Django to make a RESTful call?

2019-02-01 00:31发布

问题:

Note: I'm not trying to provide a RESTful api, I'm trying to call one.

def index( request, *args, **kwargs ):
    context = {}
    context['some_json'] = make_remote_api_call( "http://exampl.com/objects/" )

    return render_to_response( 'index.html', context, context_instance=RequestContext(request) )

Or is this just ridiculous and I should make the client always do it? Basically, I'm curious as to how to properly divide my website so that different servers (internal protected ones) can provide different subsets of info.

回答1:

Use the requests library. Here is some discussion on it and I did a talk on "Consuming Web APIs with Python" at PyOhio that you might find interesting or helpful

  • Video.
  • Slides.
  • Code.


回答2:

“RESTful call” in practice just means making an HTTP request. There are a couple of built-in modules in Python that let you do this:

  • httplib
  • urllib2

Then there are 3rd-party modules, like the one mentioned by @Issac (which, based on my very limited experience with urllib2 and httplib, looks much better than them for your purposes).



回答3:

Slumber is a RESTful data connector that can be used to make proper RESTful data services from Django systems.

https://github.com/KayEss/django-slumber



标签: django http rest