Шаблон Django For Loop Over request.META Словарь - PullRequest
2 голосов
/ 29 октября 2009

Я пытаюсь перебрать словарь, в частности метасвойство объекта запроса. Это словарь, но следующий код обрабатывает его как список строк. Как я могу сделать это правильно?

РЕДАКТИРОВАТЬ: Я обнаружил, что если я заменю request.META на request.META.items, это работает, но почему не работает следующее? Разве это не диктат?

{% for a, b in request.META %}
    {{ a }}: {{ b }}
{% endfor %}

Урожайность (для краткости это сокращено):

G: D
w: s
R: U
H: T
G: N
...
L: S
R: E
H: T
P: A

Принимая во внимание:

{{request.META}}

Урожайность:

{'GDM_KEYBOARD_LAYOUT': 'us',
'wsgi.multiprocess': False,
'RUN_MAIN': 'true',
'HTTP_COOKIE': 'sessionid=...
...
...6:*.spx=00;36:*.xspf=00;36:',
'REMOTE_HOST': '',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
'PATH_INFO': u'/'} 

Ответы [ 2 ]

7 голосов
/ 29 октября 2009

Замена request.META на request.META.items работает.

3 голосов
/ 29 октября 2009

Ну, это довольно просто.

request.META - это словарь, верно? Так что, если вы выполните цикл for для dict, вы получите его ключи. Это то, что вы получаете. А поскольку ключи являются строками (в вашем примере), и строки могут быть распакованы, их первый и второй элементы (символы) распаковываются в a и b.

Метод словаря items, однако, выдает список из двух кортежей, каждый из этих кортежей распаковывается в a и b соответственно. Итак, это «работает», как вы говорите.

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