django registration redux中视图的子类

django registration redux中视图的子类,django,django-views,subclass,Django,Django Views,Subclass,我正在使用,我想给视图提供更多数据来渲染我的基础模板。我读了那本书 我的url.py: class MyPasswordChangeView(PasswordChangeView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # context['book_list'] = Book.objects.all() # example i

我正在使用,我想给视图提供更多数据来渲染我的基础模板。我读了那本书

我的
url.py

class MyPasswordChangeView(PasswordChangeView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # context['book_list'] = Book.objects.all() # example in doc
        context_dict = services.get_base_data_for_views(request)
        return context_dict

urlpatterns = [
    ...
    path('accounts/password/change/', MyPasswordChangeView.as_view(
    success_url=reverse_lazy('auth_password_change_done')), name='auth_password_change'),
    ...
]
我在services.py中有额外的数据,但此代码给出错误:

name 'request' is not defined

因此没有定义上下文。我可以从哪里接受我的请求?我主要需要用户(但是
打印(用户)=“用户”未定义
)。还是我应该编写另一个函数?

在基于Django类的视图的方法中,您可以使用
self.request

class MyPasswordChangeView(PasswordChangeView):
    def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context_dict = services.get_base_data_for_views(self.request)

    return context_dict

因此,您可以使用
self.request.user
访问用户。通常,您希望使用或,以便只有登录的用户才能访问该视图,但在您的情况下,
PasswordChangeView
会为您解决这个问题。

请注意,如果您希望在所有视图中包含
get_base_data_for_views()
中的变量,则最好创建一个。