4
我正在使用DetailView來查看Project對象,並且我希望能夠訪問正在查看的Project對象以便將其傳遞給裝飾器,是這樣的:在Django基於類的通用視圖中訪問上下文對象
class ProjectDetailView(DetailView):
context_object_name = "project"
model = Project
@method_decorator(membership_required(project))
def dispatch(self, *args, **kwargs):
return super(ProjectDetailView, self).dispatch(*args, **kwargs)
然而,傳遞「項目」或「對象」的裝飾給了我一個「對象」,而不是一個項目實例。我如何獲得該項目實例,以便我的裝飾器功能可以使用它?
謝謝你的幫助! :) – Asterism 2011-05-02 02:33:12
你能告訴我爲什麼我需要使用'self.request.user'而不是'request.user'嗎?我用'request.user'試過了代碼,它工作正常,但我不知道這是否是巧合。 – Asterism 2011-05-02 05:55:09
是的,你可以使用'request.user',因爲它作爲參數傳遞給方法。我只是沒有注意到這一點。通常,當我在基於類的視圖中覆蓋方法時,它們不會將請求作爲參數(類似於'get_context_data','get_query_set','get_object'等方法)獲取請求。 – 2011-05-03 07:27:07