2011-11-04 45 views
0

我不知道這是否可能,但我會解釋我想試試!有沒有辦法知道URL分派器通過查看的變量名?

我做了一個上下文處理器,將加載一些用戶信息。 我需要知道,在這個上下文處理器中,如果在變量列表中有一個名爲「group」的變量將被傳遞給我的視圖,如果是,我將加載更多的東西。

處理器只接收一個REQUEST對象,我認爲這是不可能的。

但是,通過REQUEST_PATH(來自請求),我可以製作一些魔術(w/urls.py)並找到django選擇的確切視圖和變量。有沒有簡單的方法來做到這一點(或者......一種方式?:D)?

---- ----解決

解決方案(使用的是什麼yasar11732說)是這樣的:

x = resolve(request.META["PATH_INFO"]) 
if 'group_name' in x.kwargs 
    do_domething() 

謝謝! :)

+2

不要使用'has_key';它已被棄用。只要使用'如果'group_name'在x.kwargs' – agf

+0

謝謝,我會改變。 – fabriciols

回答

2

請參閱:resolve()它確實是你想要做的。請注意,如果該函數未找到匹配項,則會拋出404異常,因此請準備好捕獲它。

0

你可以在每個視圖的基礎上選擇性地添加它嗎?然後你可以這樣做:

def group_processor(request): 
    # ... 

def some_view(request, user, group=None): 
    # ... 
    processors = [group_processor] if group else [] 
    context = RequestContext(request, {}, processors) 
    return render_to_response("my_template.html", context_instance=context) 
相關問題