Python 如何更新django模板中呈现的变量?

Python 如何更新django模板中呈现的变量?,python,django,django-templates,jinja2,backend,Python,Django,Django Templates,Jinja2,Backend,我试图呈现一个变量,该变量将在代码中多次更新,但它只是将最后一个变量呈现到模板中, 例如: 视图。py: def test(request): message = 'first massage' #do something message = 'second massage' return render(request,'test.html',{'message':message}) test.html: <h1> {{message}} <

我试图呈现一个变量,该变量将在代码中多次更新,但它只是将最后一个变量呈现到模板中, 例如:

视图。py:

def test(request):
    message = 'first massage'
    #do something
    message = 'second massage'

    return render(request,'test.html',{'message':message})
test.html

<h1> {{message}} </h1>
{{message}

它只显示第二条消息,但我希望它显示第一条消息,然后在它更改后,显示第二条消息。有什么帮助吗?

您好,我想您可以通过执行以下操作来解决此问题。。。。您需要创建一个循环。。它看起来像这样

在html代码之前,键入{%for messages in messages%} 在html代码之后键入{%endfor%}

希望它能起作用

  • 如果您想动态更改“message”变量(比如“message”变量与您的模型有关)

    a、 )在views.py中使用python更新“message”变量, 创建一个返回JsonResponse的api。然后您可以通过 JavaScript和更新(document.getElementById(“someID”).innerHTML=`${message}`)

    在视图中.py

    def testapi(request):
       # do something
       return JsonResponse({"message":"VALUE_OF_MESSAGE"},status=201)
    
    在javascript文件中

    fetch('/testapi')
    .then(response => response.json())
    .then(resp => {
       console.log(resp); //output=> {"message":"VALUE_OF_MESSAGE"}
       var message=resp.message;
      document.getElementById('someId').innerHTML= ``${message}`; 
      });
    
    您可以随时执行fetch请求,并且可以执行任意次数

  • 2.)如果必须对页面中的元素执行某些操作以更新消息
    变量,我建议您直接使用JavaScript。

    看看您的视图函数,您可以使用
    消息的最后一个状态
    变量渲染一次模板。您可以随时更改变量,但模板将仅以最后一种状态呈现。注意,Django呈现一个静态HTML文档。如果您想创建一个动态页面,应该使用AJAX或SPA。或者更简单的方法是使用javascript,它使用传递的值并逐个显示它们。您可以为这两条消息使用不同的变量名。然后最后将两个变量都发送到模板。嗨,谢谢你的回答,但我之前尝试过,它只是在消息中循环并显示其字符谢谢,但是如果我使用这个,我应该如何返回我的呈现模板呢?您将只呈现一次包含变量“message”的模板。然后每次获取数据时都通过javascript更新您的变量。(someElement.innerHTML='${message}')。