django % url % 带参数(字典列表)
Posted
技术标签:
【中文标题】django % url % 带参数(字典列表)【英文标题】:django % url % with parameters (list of dicts)django % url % 带参数(字典列表) 【发布时间】:2016-11-26 18:28:21 【问题描述】:我正在遵循以下建议:Refresh <div> element generated by a django template
我传递了一些变量,一个啦:
url: '% url 'search_results' 'sched_dep_local' flights|escapejs %',
问题在于“航班”是 search_results 模板需要访问的字典列表,它非常大并且包含诸如撇号之类的内容
['foo': 'bar', 'foo': 'baz'] and so on
所以我可以将它与 % url % 一起使用的唯一方法似乎是使用 escapejs 来摆脱撇号,但是在 view.py 中,我需要它再次成为一个字典列表,所以我可以执行以下操作:
def search_results(request, sort_key, flights):
flights = search_utils.sort(flights, sort_key)
return render_to_response('search_results.html', 'flights' : flights )
有没有简单的方法来做到这一点?或者,我对这整件事的看法都错了吗?
ETA:另请参阅(解释我想要做什么以及为什么):
<script>
$(".sort").on("click", function()
$.ajax(
url: '% url 'search_results' 'sched_dep_local' flights|escapejs %',
success: function(data)
$('#search-results').html(data);
);
);
</script>
我有一个模板(在 search_results.html 中),可以打印航班中每个航班的一些数据。我想对该数据进行排序并重新渲染模板,但我不知道如何。
【问题讨论】:
为什么需要将字典列表作为变量传递给 url?无论你想达到什么目标,我相信有更好的方法。 帖子已更新详细信息。你能推荐一个更好的方法吗? 【参考方案1】:这不是处理复杂数据的正确方法。而不是通过 URL 发送它,您应该使用 POST 并将其发送到请求的正文中:由于您使用的是 jQuery,您可以在该调用中执行 method: "POST"
。在后端,您可以从 JSON 反序列化它。
但是,这样做似乎有点奇怪;数据显然已经来自 Django 后端,所以不清楚你为什么要将它发回那里。
【讨论】:
我希望能够在不刷新页面的情况下单击按钮并对数据进行排序。我想不出更好的方法来做到这一点。 为什么需要将它发送给 Django 以便对其进行排序? javascript 完全能够对数据进行排序。 问题不在于排序。这是刷新模板。我需要重新渲染使用排序数据的模板。 为什么需要刷新模板呢?你已经渲染了所有的 HTML 元素;你只需要移动它们。 jQuery 已经有了所有相关的方法。 您能详细说明一下吗?我不确定你的意思。以上是关于django % url % 带参数(字典列表)的主要内容,如果未能解决你的问题,请参考以下文章