I’m trying to access another service’s API, using my model’s fields as the keywords in the API request. The URL would be like like so:
http://api.example.com/json/?first_name=FNAME&last_name=LNAME&key={key}
Here’s my code from views.py:
class ExamplePersonView(ListView):
context_object_name = "example_person"
template_name = "templates/example_person.html"
def get_queryset(self):
lname = get_object_or_404(ExamplePeople, lname__iexact=self.args[0])
return ExamplePeople.objects.filter(lname=lname)
From what I understand, I’ll need to use AJAX to communicate between my page template and my views.py to send the request and then present the information on the page.
I’ve found several Django apps that make it easy to turn your models into a public API, but none that help you access API’s from another service. Does anyone know of an app like that?
If not, does anyone have a good understanding of using AJAX with Django to make the request and present it in the template?
There’s several ways to communicate with a “foreign” API. There’s no necessity for ajax. Ajax is just for making background calls in a template, triggering whatever event you have in mind.
But let’s say you want to communicate with the facebook GraphAPI to retrieve a profile
http://graph.facebook.com/bill.clinton
The standard result is serialized as JSON, which implements easily into AJAX or any JavaScript library, hence the name JavaScript Object Notation.
So an example with AJAX might be:
Include this in your javascript file or within your template between script tags and you should get a nice alert message:
Now you could turn this alert into something more meaningful, and put it within a h1 tag (not sure why this is meaningful)
But sometimes you would want to retrieve data and do something with it server side in your application.
So create a django urlpattern and view, e.g.:
Now visit your url
As a logic result, it’s also perfectly possible to trigger async events by some user action. Eg the URL parameter in the previously mentioned ajax example, could also be a django url like “/call_bill_clinton/”.
Furthermore ajax calls let you do the same trickery as http requests, you can use a variety of request methods combined with cool javascript events, like a beforeSend event
Where the #loading could be something like: