2016-11-25 30 views
1

我有一些在我的Django視圖開始時重複的代碼。它基本上只是在上下文中添加了一些變量,但是基於URL參數,例如Django上下文處理器和URL參數

def someView(request, id): 
    target = Target.objects.get(id=id) 
    # name will be added to ctx 
    name = target.name 

(有更多的屬性添加和相關模型的其他屬性,但是這給了總體思路---有重複碼在每個視圖開始不少行)

我我認爲我可以通過利用Django的上下文處理器使我的代碼更加乾爽,但似乎這些不能訪問URL參數?

是否有另一種方法來避免這些重複行?也許中間件或其他東西?

回答

2

您可以通過resolver_match屬性通過request訪問URL參數。因此,例如,你可以做request.resolver_match.kwargs['id']以獲得ID kwarg。