Python 在django上,ajax请求上的request.GET[";paramName";]返回列表

Python 在django上,ajax请求上的request.GET[";paramName";]返回列表,python,django,jquery,Python,Django,Jquery,这是我的Javascript代码: expr = "A simple string" $.ajax({ type: "GET", url: "/ajaxrequest/get_dt_paragraphs?expr=" + expr, timeout: 8000, success: function(data) { doSomething(); } }); 在我的django视图中,我编写了以下方法: def get_dt_paragraphs(request):

这是我的Javascript代码:

expr = "A simple string"
$.ajax({
    type: "GET",
    url: "/ajaxrequest/get_dt_paragraphs?expr=" + expr,
    timeout: 8000,
    success: function(data) { doSomething(); }
});
在我的django视图中,我编写了以下方法:

def get_dt_paragraphs(request):
    if request.method == 'GET':
        my_string = request.GET["expr"]
        # print on the console for debugging purposes.
        print my_string
    # Do other stuff

控制台上的输出是[u“A simple string”],因此我发现参数名返回一个数组。当然,我可以编写request.GET[“expr”][0]来获取字符串,但我想知道为什么我会得到一个列表而不是字符串,以及如何避免这种情况以编写更好、更优雅的代码。

GET和POST对象属于QueryDict类,该类设计用于处理每个键的多个值()

如果你确定你只想要一个值,我建议

request.GET.get('expr', [])[:1]

如果“expr”不可用,则返回空数组,但无论如何这应该是惯用的Python,因为[]的布尔值为False。

GET和POST对象属于QueryDict类,该类用于处理每个键的多个值()

如果你确定你只想要一个值,我建议

request.GET.get('expr', [])[:1]

如果“expr”不可用,则返回空数组,但无论如何这应该是惯用的Python,因为[]的布尔值为False。

实际上,在读取了相同文档中的更多内容后,QueryDict的get方法已被重写以返回最后一个值,因此不需要slice。因此,您可以使用任何您想要的回退:request.GET.GET('expr',fallback)。实际上,在读取了相同文档中的更多内容后,QueryDict的GET方法已经被覆盖以返回最后一个值,因此不需要slice。因此,您可以使用任何您想要的回退:request.GET.GET('expr',fallback)