在ajax请求之后更新'div'
P粉891237912
2023-08-17 11:47:33
<p>这是我在Django中的第一个项目。我对Django、ajax和javascript都很陌生。我必须在进行ajax请求后将数据发送到jinja模板。</p>
<p>我的index.html如下:</p>
<pre class="brush:php;toolbar:false;">{% if data %}
<p>{{data.title}}</p>
<p>{{data.price}}</p>
{% endif %}</pre>
<p>我的javascript如下:</p>
<pre class="brush:php;toolbar:false;"><script>
$.ajax({
type: "POST",
url: "/", // 替换为实际视图的URL
data: {
input_value: "test",
csrfmiddlewaretoken: "{{ csrf_token }}"
},
success: function(response) {
title = response // 请求后,response会变成 { "data" : {"title":"t1", "price":20} }
},
error: function() {
console.log("Error")
}
});
<script></pre>
<p>我不知道这是否可行。有些人使用element.innerHTML来更新,但我需要发送到jinja格式。谢谢</p>
您在这里有两个选择,这取决于您的偏好。
返回一个模板而不是JSON 这里的想法是在服务器端生成模板,然后将生成的HTML返回给AJAX调用者。因此,Ajax成功只是将此HTML片段追加到正确的位置。
在JS中渲染div 如果您只有JSON策略或使用DRF,则唯一的方法是使用循环遍历接收到的项目并生成等效的HTML,然后将其添加到文档中。
您无法将JinJa放在同一页上,因为在生成页面以渲染它时,您尚未接收到数据。