/ / साइनअप फॉर्म के रूप में एक फॉर्म विज़ार्ड का उपयोग करना django allauth - django, django-forms, django-allauth

साइनअप फॉर्म के रूप में एक फॉर्म विज़ार्ड का उपयोग करना django allauth - django, django-forms, django-allauth

मैं पंजीकरण / साइनअप प्रक्रिया में एक फॉर्म विज़ार्ड को लागू करने की कोशिश कर रहा हूं। मै इस्तेमाल कर रहा हूँ django-allauth प्रमाणीकरण के लिए और दस्तावेज़ों और पिछले प्रश्न के आधार पर Django-allauth का उपयोग करते समय उपयोगकर्ता प्रोफ़ाइल को कस्टमाइज़ कैसे करें यह बताता है कि साइन में अतिरिक्त फ़ील्ड कैसे जोड़ेंअप फॉर्म मैं वास्तव में नहीं देखता कि मैं एक फॉर्म विज़ार्ड का उपयोग करने के लिए डिफ़ॉल्ट रूप को कैसे ओवरराइड कर सकता हूं। एक विकल्प जिसे मैं विचार कर रहा था, साइनअप फॉर्म में सभी अतिरिक्त फ़ील्ड जोड़ रहा है, फिर AJAX के साथ फ़ॉर्म का सेक्शन प्रदर्शित कर रहा हूं लेकिन मुझे यकीन नहीं है कि कैसे कार्यान्वित किया जाए विभिन्न वर्गों पर सत्यापन। पंजीकरण चरण को कार्यान्वित करने के तरीके पर कोई मार्गदर्शन या सहायता जादूगर बहुत सराहना की जाएगी।

उत्तर:

उत्तर № 1 के लिए 1

मैंने हाल ही में यह किया है:

views.py

from allauth.account.forms import SignupForm
from allauth.account.utils import complete_signup

SIGNUP_FORMS = [("signup", SignupForm),
("profile", forms.UserProfileForm)]

TEMPLATES = {"signup": "trips/forms/wizard_form.html",
"profile": "trips/forms/wizard_form.html"}

class SignupWizard(SessionWizardView):
def get_template_names(self):
return [TEMPLATES[self.steps.current]]

def done(self, form_list, **kwargs):
for form in form_list:
if isinstance(form, SignupForm):
user = form.save(self.request)
complete_signup(self.request, user, settings.ACCOUNT_EMAIL_VERIFICATION, settings.LOGIN_REDIRECT_URL)
elif isinstance(form, forms.UserProfileForm):
userprofile = form.save(commit=False)
user = self.request.user
userprofile.user = user
userprofile.save()
return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)

आप जितना चाहें उतने फॉर्म जोड़ सकते हैं। मेरे मामले में, UserProfileForm एक मॉडलफॉर्म है जो उपयोगकर्ता को एक-से-एक संबंध के साथ एक नया UserProfile ऑब्जेक्ट बनाता है। दोनों ऑब्जेक्ट केवल तभी सहेजे जाते हैं जब दोनों रूपों को सफलतापूर्वक सबमिट किया जाता है। Full_signup फ़ंक्शन allauth से है और यह कुछ क्लीनअप करता है और फिर उपयोगकर्ता को साइट पर लॉग करता है।


जवाब के लिए 0 № 2

मैं AngularJS का उपयोग कर क्लाइंट पक्ष से विज़ार्ड को कार्यान्वित करना समाप्त कर दिया Django-कोणीय पैकेज तथा यह पुस्तकालय। के माध्यम से खोदने के बाद allauth साइनअप व्यू कोड, मुझे लगा कि यह पहले से ही लागू किया गया है AjaxCapableProcessFormViewMixin

उपयोग करते समय साइन अप प्रक्रिया के लिए क्लाइंट साइड कोड का उपयोग करके एक विज़ार्ड को कार्यान्वित करना django-allauth संभवतः जाने का सबसे अच्छा तरीका है क्योंकि आप सफल पुनर्निर्देशन में देरी कर सकते हैं जब तक कि विज़ार्ड में सभी रूपों को भर दिया जाता है और छोटे रूपों में विभाजित लंबे साइनअप फॉर्म को रोकता है।