我有一个非常基本的视图,该视图应该呈现一个页面并将一些数据传递到此页面,这是我的操作方法:
def myview(request):
request = mydb.objects.filter(user=request.user)
return render(request,
"main/mytemplate.html",
context={"data":request})
加载页面时,数据将传递到模板,因此要显示该数据,我只需转到html并添加以下内容即可:
{{data}}
但是我该如何从与呈现页面的视图不同的视图中做同样的事情?
让我们说这是一个我可以通过Ajax请求调用的视图,因此当触发Ajax请求时,该视图应该以相同的方式发送数据,并且我希望能够在Django模板语言中使用它
这里是一个例子:
def secondview(request):
request = mydb.objects.filter(item='free')
return HttpResponse(request)
此视图是从Ajax请求中调用的,它将发送带有数据的响应,但是我不想以这种格式或json格式获取数据,而是想从Django模板语言中使用它,就像我对第一个示例所做的那样。有什么办法吗?还是只能在上下文中将数据传递到模板?
答案 0 :(得分:1)
1)这样做不是在您的HttpResponse
中返回secondview
def secondview(request):
from django.template.loader import render_to_string
x = 1
return render_to_string('template_name.jinja', locals())
2)如果要在html中显示该响应,请在html中执行
<div id="x"> </div>
function someFunc(){
$.ajax({
url: "someurl",
type: 'GET',
success: function (response) {
document.getElementById("x").innerHtml = response
},
error: function (xhr, err) {
console.log(xhr.responseText);
},
cache: false,
contentType: false,
processData: false
});
我希望我能回答您的所有问题,如果没有让我知道。
答案 1 :(得分:0)
def myview(request):
request = mydb.objects.filter(user=request.user)
context = {"data":request}
return render(request, "main/mytemplate.html", context)