在django-registration-redux中对视图进行子类化

问题描述 投票:1回答:1

我正在使用Django-registration-redux,我希望为视图提供更多数据以呈现我的基本模板。我读了example in doc

我的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 django-views subclass
1个回答
1
投票

在基于Django类的视图的方法中,你可以使用access the requestself.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会为你处理这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.