Ключ параметра URL Django используется дважды - PullRequest
1 голос
/ 02 марта 2010

У меня есть простое представление 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 %}

URL:

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

Ответ:

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

item : 2

Должна ли запись 'item' иметь значение '1,2' или "['1', '2']"? Обратите внимание, что возвращает полный GET. Как получить оба значения?

Ответы [ 2 ]

5 голосов
/ 02 марта 2010

Посмотрите документацию для QueryDict , который используется для хранения атрибутов GET / POST.

В частности:

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'])]
1 голос
/ 02 марта 2010

Возвращает несколько значений в списке. В серверной части вы можете просто проверить, является ли переменная списком или нет, а затем обработать случаи соответствующим образом. Похоже, что есть некоторая логика для возврата последнего значения, назначенного клавише, если вы приведете его к строке, как вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...