2010-08-16 54 views
2

如果我想顯示request.META詞典的多個項目:Django 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

更新

template這裏僅僅是一個嵌入式格式選項字符串(讀OP的這個答案後評論)。

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

不錯。真的有用。如果沒有你提到的模板,它如何工作? – MacPython 2010-08-16 13:15:37

+0

查看更新的答案。希望這是你的意思。 – 2010-08-16 13:25:55

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 2010-08-16 13:17:21