2010-08-16 2 views
2

Если я хочу, чтобы отобразить более чем один элемент словаря request.META:Джанго request.META

Как я могу поместить, например, два в этом строчном формате:

def myurl(request): 
    return HttpResponse("You are %s" % request.META['USER'], "Your IP Adress is " % request.META['REMOTE_ADDR']) 

не работает.

Кроме того, любые идеи, как я могу отображать/извлекать выборочные элементы этого словаря.

Если я хочу запустить более одного с помощью шаблона. Как бы вставить это в шаблон html:

например.

{{request.META}}. Это работает для всех? Как я могу отображать их по одному в каждой строке?

если хотите, например. просто:

HTTP_COOKIE

QUERY_STRING

HTTP_CONNECTION

Что бы лучший способ показать, что 3?

Спасибо!

ответ

2

Update (после прочтения комментария OP, чтобы этот ответ)

template здесь является просто строка со встроенными параметрами форматирования.

1) Он не должен быть назван template

def myurl(request): 
    place_holders = "You are %(user)s; your IP address is %(ipaddress)s" 
    options = dict(user = request.META['USER'], ipaddress = request.META['REMOTE_ADDR']) 
    return HttpResponse(place_holders % options) 

2) Вы можете сделать вместе с ним вообще делать это рядный. Это чисто вопрос о стиле/предпочтении кодирования.

def myurl(request): 
    return HttpResponse("You are %s; your IP address is %s" % (request.META['USER'], request.META['REMOTE_ADDR'])) 

Оригинал ответа

Быстрый и грязный ответ на первую часть вопроса:

def myurl(request): 
    template = "You are %(user)s; your IP address is %(ipaddress)s" 
    options = dict(user = request.META['USER'], ipaddress = request.META['REMOTE_ADDR']) 
    return HttpResponse(template % options) 
+0

Nice. действительно работает. Как он может работать без шаблона, на который вы ссылаетесь? – MacPython

+0

См. Обновленный ответ. Надеюсь, это то, что вы имели в виду. –

0

Использование RequestContext:

from django.template import RequestContext 
from django.shortcuts import render_to_response 


def myurl(request): 
    return render_to_response('template.html', {}, 
           context_instance=RequestContext(request)) 

Вы будете иметь доступ к request.META и все, что он содержит. Вы можете использовать тег шаблона отладки для печати вашего контекста.

+0

Что делает RequestContext? Это еще один способ получить META? – MacPython

Смежные вопросы