【发布时间】:2016-03-24 02:46:05
【问题描述】:
我已经检查了这个 stackoverflow topic ,但是这个 snippet 对我不起作用。我有一个错误:“模板”对象没有属性“节点列表”。 我的数据未显示在模板中。我的目标是刷新已渲染页面的数据,因此从模板更新单个块。 我的代码如下:
views.py:
def my_view(request):
if request.is_ajax():
my_data = MyObject.objects.all()
ctx = { 'test': my_data.values()}
return render(request, "temp.html", context=ctx)
提交 AJAX 请求后,我可以在 Chrome 控制台中看到我的 JSON 数据,但是该数据没有显示在模板中。
我的模板:
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
{% for v in test %}
{{ v.path }}
{% endfor %}
<script>
window.setInterval(function(){
$(document).ready(function() {
$.ajax({
async: true,
type: "GET",
url: "/requests/",
});
});
}, 2000);
</script>
我在 Chrome 控制台中看到 v.path 数据。
我的 json 数据结构如下:
[
{
"pk":4233,
"model":"hello.webrequest",
"fields":{
"method":"GET",
"meta":"",
"user":null,
"is_secure":false,
"raw_post":"",
"user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
"host":"127.0.0.1:8765",
"path":"/requests/",
"cookies":"{\"sessionid\": \"1t0ect4zsnfdh5ght7kqhmf3soezueg1\", \"csrftoken\": \"yLImX79fUFJD7kpGQCcfBZawwFtOUcFR\"}",
"remote_addr_fwd":null,
"status_code":200,
"time":"2015-12-17T15:38:04.242Z",
"post":null,
"remote_addr":"127.0.0.1",
"get":null,
"uri":"http://127.0.0.1:8765/requests/",
"is_ajax":false
}
}
]
另外,我尝试过 HttpResponse,但它对我也不起作用
您能否提供一些 100% 的工作示例?
在这个主题Render JSON objects through Django template-tag 我找到了这样的建议:
如果 json 来自您自己的应用程序,您可以返回一个 html 片段而不是 json。
但我不太明白我该怎么做。
更新:我已经解决了我的问题。我拒绝使用 django 模板标签。而不是这个,我只是将 JSON 传递给 jQuery 脚本并生成所需的 html。
【问题讨论】:
-
您能否分享
a数据,看看它的样子以及是否显示任何错误消息? -
将 JSON 添加到我的问题中
-
{% for v in test %}仅在您有列表但您的数据不是列表时才有效,这就是它不起作用的原因,应该如下 [{...},{...}] -
抱歉,JSON 只是列表的一部分,再次更新问题
-
这里有很多 非常 奇怪的地方。为什么在视图中序列化为 JSON,然后在下一行将其加载回 Python?重点是什么?如果您有错误,您应该发布整个内容。
标签: jquery python json ajax django