首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据从Django视图传递到模板

将数据从Django视图传递到模板
EN

Stack Overflow用户
提问于 2019-11-23 18:58:30
回答 2查看 270关注 0票数 0

我有一个非常基本的视图,它应该呈现一个页面并将一些数据传递给这个页面,下面是我是如何做到的:

代码语言:javascript
运行
复制
def myview(request):

    request = mydb.objects.filter(user=request.user)

    return render(request,
                  "main/mytemplate.html",
                  context={"data":request})

当页面加载时,数据被传递给模板,所以要显示该数据,我只需转到我的html并添加以下内容:

代码语言:javascript
运行
复制
{{data}}

但是,我如何从呈现页面的视图不同的视图中执行相同的操作呢?

假设这是一个我可以通过Ajax请求调用的视图,因此当触发Ajax请求时,该视图应该以相同的方式发送数据,并且我希望能够在Django模板语言中使用它。

下面是一个示例:

代码语言:javascript
运行
复制
def secondview(request):
    request = mydb.objects.filter(item='free')
    return HttpResponse(request)

这个视图是从Ajax请求中调用的,它将发送带有数据的响应,但我不想以这种格式或json格式获取数据,而是希望从Django模板语言中使用它,就像我在第一个示例中所做的那样。有什么办法可以做到吗?或者我只能将数据传递给上下文中的模板?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-23 21:04:02

1)这样做,而不是在secondview中返回HttpResponse

代码语言:javascript
运行
复制
def secondview(request):
    from django.template.loader import render_to_string
    x = 1
    return render_to_string('template_name.jinja', locals())

2)如果您希望在html中显示响应,请在html中执行此操作,

代码语言:javascript
运行
复制
<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
EN

Stack Overflow用户

发布于 2019-11-23 21:01:50

代码语言:javascript
运行
复制
def myview(request):
    request = mydb.objects.filter(user=request.user)
    context = {"data":request}
    return render(request, "main/mytemplate.html", context)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59006874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档