2015-03-20 8 views
7

मान लीजिए कि उपयोगकर्ता django-allauth के साथ साइट पर /some_url/ पृष्ठ पर है। जब क्लिक "लॉग इन" वे एक यूआरएल के लिए की तरह भेजा:डीजेगो allauth साइनअप ओवरराइड "अगला" रीडायरेक्ट यूआरएल

/accounts/login/?next=/some_url/ 

वे पहले से ही एक पंजीकृत उपयोगकर्ता हैं, तो यहां प्रवेश करने के बाद, वे /some_url/ है, जो ठीक है के लिए भेजा मिलता है।

लेकिन अगर वे कर रहे हैं पंजीकृत नहीं है, और वे क्लिक करें "साइन अप करें", वे करने के लिए भेजा:

/accounts/signup/?next=/some_url/ 

मान लीजिए मैं, कुछ ऑनबोर्डिंग अनुभव करने के लिए उपयोगकर्ता भेजने के लिए /onboarding/ पर, सीधे के बाद चाहते हैं वे साइन अप करें।

ऑलथ के डिफ़ॉल्ट व्यवहार को ओवरराइड करने का सबसे आसान तरीका क्या है, और उपयोगकर्ता को पर भेज दें भले ही next=/some_url/ निर्दिष्ट है?

उत्तर

9

सबसे आसान तरीका टेम्पलेट account/signup.html आपकी अपनी प्रतिलिपि के साथ ओवरराइड करना होगा। आपको लगता है कि टेम्पलेट की जांच, तो आप निम्न अनुभाग देखेंगे:

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

आप if/endif हिस्से को हटाने और अंदर मूल्य बदलते हैं, तो साइन अप पृष्ठ पर एक विशेष पृष्ठ पर रीडायरेक्ट करेगा, भले ही आप एक next तर्क पारित यूआरएल में:

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

हालांकि मेरे मामले में फिट नहीं है, यह एक अच्छा जवाब है। मेरे मामले में, मुझे डर है कि सभी उपयोगकर्ता साइनअप के तुरंत बाद लॉगिन नहीं करेंगे। फिर उनके यूआरएल को अभी भी "अगला" पैरामीटर मिल सकता है। मैं पुनर्निर्देशन करने के लिए एक मिडलवेयर का उपयोग करने जा रहा हूं, और एक बार काउंटर का उपयोग यह सुनिश्चित करने के लिए करता हूं कि पुनर्निर्देशन केवल एक बार होता है। हां, जटिल समाधान, लेकिन – ZZY

+0

पर एक बार "/ ऑनबोर्डिंग /" का दौरा किया जा सकता है, यह बेहतर नहीं होगा @ Selcuk 'value =" {% url 'onboarding_urlname'%} "' – unlockme

+0

@unlockme ऐसा कुछ आदर्श होगा जब यह आदर्श होगा मुमकिन। – Selcuk

संबंधित मुद्दे