Django request.META

时间:2010-08-16 12:50:19

标签: django request metadata

如果我想显示request.META词典的多个项目:

我怎样才能举例如这个字符串格式为两个:

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

不起作用。

此外,任何想法如何显示/提取该词典的选择性项目。

如果我想通过模板运行多个。我如何在html模板中插入它:

e.g。

{{request.META}}。这适用于所有人吗?如何在每行显示一个?

如果我想要,例如只是:

  

HTTP_COOKIE

     

QUERY_STRING

     

HTTP_CONNECTION

显示3的最佳方式是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

更新(在阅读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)

答案 1 :(得分: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及其包含的所有内容。您可以使用调试模板标记来打印上下文。