django LOGIN_REDIRECT_URL with dynamic value

前端 未结 4 1158
轮回少年
轮回少年 2021-01-02 09:24

I\'m trying to redirect a user to a url containing his username (like http://domain/username/), and trying to figure out how to do this. I\'m using django.contrib.auth for m

4条回答
  •  孤城傲影
    2021-01-02 09:29

    I use django-two-factor-auth login view which provides OTP features for login. Hence I extend from two_factor's LoginView.

    In main urls.py:

    from two_factor.urls import urlpatterns as tf_urls
    urlpatterns = [
      # make sure login is before default two_factor (tf_urls) urls
      # coz first url has higher preference
      path('account/login/', MyLoginView.as_view(), name='login'),
      path('', include(tf_urls)),
    ]
    

    In views.py:

    from two_factor.views.core import LoginView
    from two_factor.utils import default_device
    
    
    class MyLoginView(LoginView):
    
        def get_success_url(self):
            if self.is_otp_setup() is True:
                return reverse('homepage:homepage')
    
            # otp not setup. redirect to OTP setup page
            else:
                return reverse('two_factor:setup')
            
        def is_otp_setup(self):
            if self.request.user and \
                    self.request.user.is_authenticated and \
                    default_device(self.request.user):
                return True
            else:
                return False
    

提交回复
热议问题