我有一个非常基本的视图,它应该呈现一个页面并将一些数据传递给这个页面,下面是我是如何做到的:
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模板语言中使用它,就像我在第一个示例中所做的那样。有什么办法可以做到吗?或者我只能将数据传递给上下文中的模板?
发布于 2019-11-23 21:04:02
1)这样做,而不是在secondview
中返回HttpResponse
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
});
我希望我已经回答了你所有的问题,如果没有,请让我知道。
发布于 2019-11-23 21:01:50
def myview(request):
request = mydb.objects.filter(user=request.user)
context = {"data":request}
return render(request, "main/mytemplate.html", context)
https://stackoverflow.com/questions/59006874
复制相似问题