2013-02-18 51 views
0

我有兩個類似的功能,我想知道dictadd_csrf是否一樣?dict()和add_csrf()是否一樣?

它們是否都返回與模板中的變量相關的值?

def main(request): 
    """Main listing.""" 
    forums = Forum.objects.all() 
    return render_to_response("forum/list.html", dict(forums=forums, user=request.user)) 

def forum(request, pk): 
    """Listing of threads in a forum.""" 
    threads = Thread.objects.filter(forum=pk).order_by("-created") 
    threads = mk_paginator(request, threads, 20) 
    return render_to_response("forum/forum.html", add_csrf(request, threads=threads, pk=pk)) 

回答

0

樣的蟒蛇內置功能。

dict()是內置Python函數(或可能是一類 - 我不是在我的Python細節挺起來),接受命名參數,並返回一個Python字典。

由於render_to_response需要一個字典(或者說是一個Django上下文對象,但字典會這樣做)作爲它的第二個參數,您可以在那裏使用dict()。你同樣可以使用文字的字典:

render_to_response("forum/list.html", {"forums":forums, "user":request.user}) 

can't find any reference to add_csrf in the Django documentation,所以我想這是一個輔助函數,有人在寫做CSRF相關的東西。 (@CrazyShezy notes,它增加了CSRF令牌傳遞給模板的上下文。)

作爲其結果被作爲第二個參數傳遞給render_to_response,它必須返回一個字典(或Django的上下文對象)也是。

3

add_csrf()是一個返回字典的函數。它用於添加一個csrf標記以及請求參數。

from django.core.context_processors import csrf 

def add_csrf(request, **kwargs): 
    """ 
     Add CSRF to dictionary. 
    """ 
    d = dict(user=request.user, **kwargs) 
    d.update(csrf(request)) 
    return d 

凡爲dict()是用於創建一個字典的

相關問題