Subclass a view in django-registration-redux



我正在使用Django-registration-redux,我想为视图提供更多数据来呈现我的基本模板。我在文档中阅读了示例。

我的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

所以context_dict没有定义。我可以从哪里收到我的请求?主要是我需要用户(但print(user)= 'user' 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 访问用户。通常,您希望使用login_requiredLoginRequiredMixin,以便只有登录用户才能访问视图,但在您的情况下,PasswordChangeView会为您处理这个问题。

最新更新