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 % 带参数(字典列表)的主要内容,如果未能解决你的问题,请参考以下文章

Django URL 基于带空格的字符域?

python 2列表到字典(一个列表带键,另一个带值)

Python(10)_带参数的url的拼接方式

django的模板语言

Django框架 之 模板语言

编写一个不带括号的列表的字典值