http://api.example.com/json/?first_name=FNAME&last_name=LNAME&key={key}
这是来自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)
据我所知,我需要使用AJAX在我的页面模板和views.py之间进行通信,以发送请求,然后在页面上显示信息.
我发现了几个Django应用程序,可以很容易地将您的模型转换为公共API,但没有一个可以帮助您从其他服务访问API.有谁知道这样的应用程序?
如果没有,是否有人很好地理解使用AJAX与Django发出请求并将其呈现在模板中?
解决方法
但是,假设您想与facebook GraphAPI进行通信以检索配置文件
http://graph.facebook.com/bill.clinton
标准结果被序列化为JSON,可轻松实现AJAX或任何JavaScript库,因此命名为JavaScript Object Notation.
所以AJAX的一个例子可能是:
function callFacebook() { $.ajax({ type: "GET",data: ({}),dataType: 'json',url: "http://graph.facebook.com/bill.clinton",success: function(data){ alert("Hi I am former "+data.name); } }); } callFacebook();
将其包含在您的javascript文件中或脚本标记之间的模板中,您应该收到一条很好的警告消息:
Hi I am former President Bill Clinton
现在您可以将此警报转换为更有意义的内容,并将其置于h1标记内(不确定为什么这有意义)
$("body").html("<h1>"+data.name+"</h1>");
但有时您会想要在应用程序中检索数据并在服务器端执行某些操作.
所以创建一个django urlpattern和视图,例如:
from urllib2 import urlopen from django.http import HttpResponse from django.utils import simplejson def call_bill(request): url = "http://graph.facebook.com/bill.clinton" json = urlopen(url).read() # do whatever you want return HttpResponse(simplejson.dumps(json),mimetype="application/json") # add this to your url patterns url("^call_bill_clinton/$",call_bill)
现在访问你的网址
作为逻辑结果,通过某些用户操作触发异步事件也是完全可能的.例如,前面提到的ajax示例中的URL参数也可以是像“/ call_bill_clinton /”这样的django url.
<!-- add a button to call the function --> <button onclick="callFacebook();">Call Bill</button> function callFacebook() { $.ajax({ type: "GET",url: "/call_bill_clinton/",success: function(data){ alert("Hi I am former "+data.name+" and I came from Django"); } }); ) // remove the auto call
此外,ajax调用让你做与http请求相同的技巧,你可以使用各种请求方法结合酷的javascript事件,比如beforeSend事件
beforeSend: function() { $('#loading').show(); },
#loading可能是这样的:
<div id="loading" style="display:none;"> <img src="{% static "images/loading.gif" %}" /> </div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。