get_success_url() takes exactly 3 arguments (2 given)

China☆狼群 提交于 2019-12-02 12:14:49

The get_success_url method does not take request as an argument. Remove it.

class MyRegistrationView(RegistrationView):
    def get_success_url(self, user):
        # the named URL that we want to redirect to after # successful registration
        return ('home') 

In this case, since you always redirect to the home view, you could set success_url instead:

class MyRegistrationView(RegistrationView):
    success_url = 'home'

In django-registration-redux RegistrationView has get_success_url defined as this.

def get_success_url(self, user=None):
    """
    Use the new user when constructing success_url.
    """
    return super(RegistrationView, self).get_success_url()

Thus it seems that only two parameters will be passed to that funciton. Yet in your subclass of if you have

def get_success_url(self, request, user):
   # the named URL that we want to redirect to after # successful    registration
    return ('home') 

Which has an extra request parameter which you are not going to recieve. hence the error.

after version 1.4 the get_success_url method does not take request as an argument:

def get_success_url(self, user=None):

However, if you do need to process the request object (for example you want to remember the page from which the user decided to register which may be passed as a get or post argument) django-registration-redux provides a very convenient signal: registration.signals.user_registered

as follows:

def remember_program_for_registration(sender, user, request, **kwargs):
    [do some processing of the request object]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!