2010-02-11 42 views
2

我發現自己總是傳遞一個「用戶」變量每次調用render_to_response總是選擇render_to_response傳遞一個變量

我的很多渲染這個樣子的

return render_to_response('some/template', {'my':context,'user':user}) 

是否有辦法來自動發送這個'user'變量時,每次調用方法時都不需要手動將其添加到上下文中?

回答

11

首先,閱讀this。然後:

def some_view(request): 
    # ... 
    return render_to_response('my_template.html', 
          my_data_dictionary, 
          context_instance=RequestContext(request)) 
0

你可能想看看render_to,這是Django的惱人的一部分 - 它允許你做這樣的事情:

@render_to('template.html') 
def foo(request):   
    bar = Bar.object.all() 
    return {'bar': bar}  

# equals to 
def foo(request): 
    bar = Bar.object.all() 
    return render_to_response('template.html', 
           {'bar': bar},  
           context_instance=RequestContext(request)) 

你可以寫一個類似的裝飾(如render_with_user_to ),包裝與你一起。

0

Dimitry是正確的,但您可以通過使用direct_to_template通用視圖作爲常規函數來進一步簡化此操作。它的源代碼是here

還有不錯的附加組件,django-annoying,它提供了render_to裝飾器做類似的事情,但不需要顯式模板渲染。如果包括DJANGO.CORE.CONTEXT_PROCESSORS.AUTH在context處理器,則用戶將被添加到每個請求對象http://docs.djangoproject.com/en/dev/ref/templates/api/#id1

事實上: