Django - 在模板中显示 Json 或 Httpresponse
Django - display Json or Httpresponse in template
我在 views.py 中有这个:
return JsonResponse({'foo': 'bar'})
如何在模板中显示 "bar"?类似于:
<h1 id="demo"></h1>
<script>
document.getElementById("demo").innerHTML = ?JsonResponse?;
</script>
或者可以通过 http 响应来完成吗?
return HttpResponse("Bar")
和html:
<h1 id="demo"></h1>
<script>
document.getElementById("demo").innerHTML = ?HttpResponse?;
</script>
好的。假设您有一个 url /yourURL
连接到视图函数。我们称这个函数为索引:
from django.shortcuts import render
def index(request):
data = {foo:'bar'}
render(request,'path/to/yourTemplate.html',data)
我使用 render
作为快捷方式。在 yourTemplate.html 中,您可以在任何地方以 {{foo}}
的形式访问数据。要在不渲染的情况下将 json 个对象发送到模板,请考虑以下模板 (yourTemplate.html):
<div id='initialData'>{{foo}}</div>
<div id='jsondata'></div>
您需要一个新视图和一个 ajax 请求以从中获取信息。您可以在同一个索引视图中执行此操作,也可以构建一个全新的 url 和关联视图。让我们使用第二个选项。事情是这样的,你建立一个新的 URL /yourURL/download
连接到 download
视图 (views.py):
def download(request):
data = {foo2:'bar2'}
JsonResponse(data)
然后你需要一个 ajax 请求来调用这个视图并在 div 上写响应成功 (yourTemplate.html):
<script>
$.ajax({
url: "/yourURL/download",
type: 'get',
success: function (data) {
alert("Success");
var div = document.getElementById('jsondata');
div.innerHTML = div.innerHTML + data.foo;
}
});
</script>
瞧!您的屏幕上将同时显示 bar 和 bar2。为了进一步详细说明,您需要一个与 ajax 调用关联的按钮,这样您就可以看到该页面实际上不会使用 JsonResponse 再次呈现。
我在 views.py 中有这个:
return JsonResponse({'foo': 'bar'})
如何在模板中显示 "bar"?类似于:
<h1 id="demo"></h1>
<script>
document.getElementById("demo").innerHTML = ?JsonResponse?;
</script>
或者可以通过 http 响应来完成吗?
return HttpResponse("Bar")
和html:
<h1 id="demo"></h1>
<script>
document.getElementById("demo").innerHTML = ?HttpResponse?;
</script>
好的。假设您有一个 url /yourURL
连接到视图函数。我们称这个函数为索引:
from django.shortcuts import render
def index(request):
data = {foo:'bar'}
render(request,'path/to/yourTemplate.html',data)
我使用 render
作为快捷方式。在 yourTemplate.html 中,您可以在任何地方以 {{foo}}
的形式访问数据。要在不渲染的情况下将 json 个对象发送到模板,请考虑以下模板 (yourTemplate.html):
<div id='initialData'>{{foo}}</div>
<div id='jsondata'></div>
您需要一个新视图和一个 ajax 请求以从中获取信息。您可以在同一个索引视图中执行此操作,也可以构建一个全新的 url 和关联视图。让我们使用第二个选项。事情是这样的,你建立一个新的 URL /yourURL/download
连接到 download
视图 (views.py):
def download(request):
data = {foo2:'bar2'}
JsonResponse(data)
然后你需要一个 ajax 请求来调用这个视图并在 div 上写响应成功 (yourTemplate.html):
<script>
$.ajax({
url: "/yourURL/download",
type: 'get',
success: function (data) {
alert("Success");
var div = document.getElementById('jsondata');
div.innerHTML = div.innerHTML + data.foo;
}
});
</script>
瞧!您的屏幕上将同时显示 bar 和 bar2。为了进一步详细说明,您需要一个与 ajax 调用关联的按钮,这样您就可以看到该页面实际上不会使用 JsonResponse 再次呈现。