我創建了自己的類LocalSignup,它使用我自己的窗體和我自己的驗證邏輯擴展了基本django-allauth SignupView類。問題是,成功後,我無法將視圖重定向到settings.py中的django LOGIN_REDIRECT_URL
。我在我的課堂觀點中包含了一個success_url
字段;我試過覆蓋get_success_url
函數(見下文);我也嘗試通過使用LocalSignup.as_view(success_url="/add_account_select/")
傳遞我的成功重定向。沒有工作。關於我在做什麼的任何想法都是錯誤的?成功URL重定向不適用於django-allauth中的自定義視圖
class LocalSignup(SignupView):
form_class = AllAuthUserForm
template_name = 'signup/social_login.html'
success_url = '/add_account_select/' #reverse_lazy('add_account_select')
def get_success_url(self):
return '/add_account_select/' #reverse('add_account_select')
def dispatch(self, request, *args, **kwargs):
# self.sociallogin = request.session.get('socialaccount_sociallogin')
return super(LocalSignup, self).dispatch(request, *args, **kwargs)
def form_valid(self, form):
ret = super(LocalSignup, self).form_valid(form)
### MY FORM VALIDATION LOGIC
return ret
def get_context_data(self, **kwargs):
ret = super(LocalSignup, self).get_context_data(**kwargs)
ret.update(dict(username=self.sociallogin.account.user.first_name,
photo_url=self.sociallogin.account.get_avatar_url()))
return ret
可以肯定的是:你是否改變了標準的url路由,使得si gnup視圖實際上是使用你的註冊視圖而不是標準視圖?我建議你在你的方法中加入一個斷點('import pdb; pdb.set_trace()')來查看它是否被調用。如果它被調用,你可以遍歷代碼來查看出錯的地方。我有興趣聽到結果... – pennersr 2013-03-18 11:50:56
感謝您的迴應pennersr。是的,我已經通過我的代碼之前,我只是再次通過它。我的表單驗證邏輯(上面)在allauth表單驗證邏輯之前被調用。我的覆蓋'LocalSignup.dispatch'函數也被調用(在'CloseableSignupMixin.dispatch'之後,'RedirectAuthenticatedUserMixin.dispatch'之後和'SignupView.dispatch'之後)。所以代碼肯定是被調用的,但不管它是否仍然返回'LOGIN_REDIRECT_URL' HttpRedirectRepose,這是我無法想象的。再次感謝。 – 2013-03-19 19:10:36
超級'form_valid'是使用成功URL的地方:https://github.com/pennersr/django-allauth/blob/36900f5d1741b00ea6d4e32530c645ebb6c1b9fe/allauth/account/views.py#L114正如你所看到的,成功的URL被檢索(它應該調用你的方法),然後傳遞給'complete_signup',然後調用'perform_login'(https://github.com/pennersr/django-allauth/blob/36900f5d1741b00ea6d4e32530c645ebb6c1b9fe/allauth/account/utils.py# L80)。應始終傳遞您的網址,並最終將其用作重定向網址。添加打印或逐步確認。 – pennersr 2013-03-20 20:13:08