【问题标题】:Django URL Parameter Key Used TwiceDjango URL 参数键使用了两次
【发布时间】:2011-01-22 19:26:18
【问题描述】:

我有一个简单的 Django 视图,它只返回 URL 参数,但如果我多次使用相同的参数键,我似乎无法访问它。考虑以下设置:

urls.py:

(r'^header/$',header)

查看功能:

def header(request)
    return render_to_response('header.html',locals(),mimetype='text/plain')

模板:

{{ request.GET }}
{% for key,val in request.GET %}
{{ key }} : {{ val }}
{% endfor %}

网址:

  • http://mysite/header/?item=1&item=2

回复:

<QueryDict: {u'item': [u'1', u'2']}>

item : 2

“item”条目的值应该是“1,2”还是“['1','2']”?注意完整的 GET 返回的内容。如何获得这两个值?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    查看用于保存 GET/POST 属性的 QueryDict 的文档。

    具体来说:

    QueryDict 是一个类字典类,自定义处理同一个键的多个值。这是必要的,因为某些 HTML 表单元素,尤其是 <select multiple="multiple">,会为同一个键传递多个值。

    你可能想使用QueryDict.lists()

    q = QueryDict('a=1&a=2&a=3')
    q.lists()
    [(u'a', [u'1', u'2', u'3'])]
    

    【讨论】:

      【解决方案2】:

      它返回列表中的多个值。在后端,您只需检查变量是否为列表,然后相应地处理案例。看起来有一些逻辑可以返回分配给键的最后一个值,如果你将它强制转换为你正在做的字符串。

      【讨论】:

      • 模板没有机制可以做到这一点吗?
      • @kzh - 你不想在模板中这样做,你想在视图中这样做。
      • @Dom - 我一般不会,但我很好奇 Django 是否有这样的机制,仅此而已。
      • Lance McNearney 的评论中提到的“财产”列表是否有效?检查 value.lists 并循环它是否存在。
      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2013-10-05
      • 2020-05-24
      • 2016-03-19
      • 1970-01-01
      • 2021-07-28
      相关资源
      最近更新 更多