обработка django request.get и нескольких переменных для одного и того же имени параметра

<p>в представлении django и т.д. вы можете получить доступ к <strong> request.get ['variablename'] </strong>, поэтому, по вашему мнению, вы можете вернуться сделать что-то вроде этого:</p><pre><code>myvar = request.get['myvar'] </code></pre><p>фактический тип объекта request.get ['myvar']:</p><pre><code><class 'django.http.querydict'> </code></pre><p>теперь, если вы хотите передать несколько переменных для одного и того же имени параметра, т.е.</p><p> <a href="http://example.com/blah/?myvar=123&myvar=567">http://example.com/blah/?myvar=123&myvar=567</a> </p><p>другими словами, вы хотели бы получить список python <strong> </strong> для параметра <strong> myvar </strong></p><p>по сути, то, что я хотел бы сделать, это что-то вроде этого</p><pre><code> for var in request.get['myvar']: print var </code></pre><p>однако, если вы попытаетесь получить последнее значение, переданное в url, т.е. в приведенном выше примере, вы получите <strong> 567 </strong></p><p>и результат в оболочке будет:</p><pre><code>5 6 7 </code></pre><p>однако, когда вы печатаете request.get, создается впечатление, что у него есть список, т.е.</p><pre><code><querydict: {u'myvar': [u'123', u'567']}> </code></pre><p>ok update: он предназначен для возврата последнего значения, мой вариант использования мне нужен список.</p><p>из django документов:</p><blockquote> <p>querydict. <strong> getitem </strong> (ключ) возвращает значение для данного ключа. если ключ имеет более одного значения, <strong> getitem </strong> () возвращает последнее значение. вызывает django.utils.datastructures.multivaluedictkeyerror, если ключ не существует. (это подкласс стандартного keyerror в python, так что вы можете продолжать ловить keyerror</p> <p>querydict.getlist (key) возвращает данные с запрошенным ключом в виде списка python. возвращает пустой список, если ключ не существует. он гарантированно вернет какой-то список.</p> </blockquote><p>обновление: если кто-то знает, почему django разработчики сделали это, пожалуйста, дайте мне знать, кажется, что показывать список нелогично, и он не ведет себя как один. не очень pythonic!</p>

<p>вам нужна функция <a href="https://docs.djangoproject.com/en/1.8/ref/request-response/#django.http.querydict.getlist">getlist ()</a> объекта get:</p><pre><code>request.get.getlist('myvar') </code></pre>

<p>другим решением является создание копии объекта запроса ... как правило, вы не можете выполнять итерацию по объекту request.get или request.post, но вы можете выполнять такие операции с копией:</p><pre><code>res\_set = request.get.copy() for item in res\_set['myvar']: item ... </code></pre>