当然,只需设置一个返回JSON并向其发出请求的视图.这是一个简单的例子:
import json
from django.http import HttpResponse
from django.template import Template, Context
def ajax(request):
"""returns json response"""
return HttpResponse(json.dumps({'foo': 'bar'}), mimetype='application/json')
def index(request):
"""simple index page which uses jquery to make a single get request to /ajax, alerting the value of foo"""
t = Template("""
<!doctype html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript">
$.get('/ajax/', function(data) {
alert(data['foo']);
});
</script>
</head>
</html>""")
return HttpResponse(t.render(Context()))
# urlconf
urlpatterns = patterns('',
(r'^$', index),
(r'^ajax/', ajax),
)
Run Code Online (Sandbox Code Playgroud)
补充 zeekay 答案,如果您只想发送一个对象,您可以执行 json 转储,例如:
import json
def my_ajax_view(request):
if not request.is_ajax():
raise Http404
data_dict = getmydata() #lets supose is a dict
return HttpResponse(json.dumps(data_dict))
Run Code Online (Sandbox Code Playgroud)
这样,您将通过 ajax 成功接收该数据,并用它做任何您想做的事情。
您也可以发送列表,当您收到响应时,有时您需要对数据进行 JSON.parse (有时因为当您发送字典时我认为没有必要)
如果我理解正确,您希望在 HTML 输出中呈现一些 JSON。
为此,请将 json 编码的对象从视图传递到模板:
views.py:
import json
def myview(request):
obj = {"a": 1, "b": 2}
return render_to_response("template.html", {"obj_as_json": json.dumps(obj)})
Run Code Online (Sandbox Code Playgroud)
template.html:
<html>
<head>
<script type="text/javascript">
var obj = {{ obj_as_json|safe }};
</script>
</head>
...
</html>
Run Code Online (Sandbox Code Playgroud)
将呈现为:
...
<script type="text/javascript">
var obj = {"a": 1, "b": 2};
...
Run Code Online (Sandbox Code Playgroud)
请注意,json.dumps仅适用于包含简单数据类型的字典。Django 支持将模型对象序列化为 json,使用:
from django.core import serializers
obj_as_json = serializers.serialize("json", my_model_object)
Run Code Online (Sandbox Code Playgroud)
更新:请注意,您需要使用“安全”来获取此信息:
var obj = {"items": [{"human": "Genesis", "usfm": "GEN"},],}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
var obj = {"items": [{"human": "Genesis", "usfm": "GEN"},],}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23198 次 |
| 最近记录: |