带参数的django {%url%}(dicts列表)

时间:2016-07-22 18:48:01

标签: python django

我正在遵循以下建议:Refresh <div> element generated by a django template

我传递了一些变量,一个la:

url: '{% url 'search_results' 'sched_dep_local' flights|escapejs %}',

问题是'flight'是search_results模板需要访问的dicts列表,而且它非常大并且包含像撇号这样的内容

[{'foo': 'bar'}, {'foo': 'baz'}] and so on

因此,我可以使用{%url%}的唯一方法是使用escapejs来摆脱撇号,但是在views.py中,我需要它再次列出一个dicts,所以我可以做的事情如下:

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中),可以为航班中的每个航班打印一些数据。我想对数据进行排序并重新呈现模板,但我无法弄清楚如何。

1 个答案:

答案 0 :(得分:0)

这不是处理复杂数据的正确方法。您应该使用POST并将其发送到请求正文中,而不是通过URL发送它:因为您正在使用jQuery,所以您可以在该调用中执行method: "POST"。在后端,您可以从JSON反序列化。

然而,这样做似乎有点奇怪;数据显然已经来自Django后端了,所以不清楚你为什么要把它发回那里。