2015-03-20 16 views
7

Bir kullanıcı django-allauth içeren bir sitede /some_url/ sayfasında olduğunu farz edin. onlar zaten kayıtlı kullanıcı iseniz buradan giriş yaptıktan sonra, onlar gayet /some_url/, gönderilen olsun,Django allauth kaydını geçersiz kıl "next" yönlendirme URL'si

/accounts/login/?next=/some_url/ 

: tıklandığında "Giriş" onlar gibi bir URL'ye gönderilen olsun. Onlar kayıtlı, tıklamazsa "kayıt" değilseniz

Ama onlar gönderilen olsun:

/accounts/signup/?next=/some_url/ 

varsayalım Doğruca sonra /onboarding/ de, bazı katılım olanağına kullanıcıyı göndermek istediğiniz onlar kaydol.

Allauth'un varsayılan davranışını geçersiz kılmanın ve next=/some_url/ belirtilse bile kullanıcıyı /onboarding/'a göndermenin en kolay yolu nedir?

cevap

9

En basit yol, kendi kopyanızı şablon account/signup.html geçersiz kılmak olurdu. Bir next argüman geçmesi bile, if/endif bölümünü kaldırmak ve iç değerini değiştirirseniz

{% if redirect_field_value %} 
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
{% endif %} 

, kayıt sayfası belirli bir sayfaya yönlendirme yapar: Eğer bu şablonu incelerseniz aşağıdaki bölümü görürsünüz URL:

<input type="hidden" name="{{ redirect_field_name }}" value="/onboarding/" /> 
+0

Yine de benim durumuma uymuyor olsa da, bu iyi bir cevap. Benim durumumda, tüm kullanıcılar kayıt olduktan hemen sonra giriş yapmayacaklarından korkuyorum. Daha sonra, URL’leri "sonraki" bir parametre alabilir. Yeniden yönlendirme yapmak için bir middleware kullanacağım ve yeniden yönlendirmenin yalnızca bir kez gerçekleşmesini sağlamak için bir sayaç kullanacağım. Ya, karmaşık bir çözüm, ama garanti edebilirsiniz "/ onboarding /" bir kez ziyaret edilir – ZZY

+0

Daha iyi olamazdı @Selcuk gibi bir şey yapmak için "value =" {% url 'onboarding_urlname'%} "' – unlockme

+0

@unlockme Bu ideal olurdu mümkün. – Selcuk

İlgili konular