Django all-auth注册无法正常工作

时间:2016-03-24 19:34:44

标签: django django-forms django-allauth

我创建了一个自定义注册表单,如下所示:

<form class="register-form" method="post" action="{% url 'account_signup' %}?next={{ request.GET.next }}&&ref={{ request.GET.ref }}" enctype="multipart/form-data">
        {% csrf_token %}
        <h3>Sign Up</h3>
        <p>
            Enter your personal details below:
        </p>

        <div class="form-group">
            <div class="input-icon">
                <label class="control-label my-file" for="profilePicLabel">Profile Pic</label>
                <input type="file" id="profilePhotoFileUpload" name="image" value="{% static 'defaultAvatar.png' %}">
            </div>
        </div>
        <div class="form-group">
            {{ form.first_name.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Full Name</label> -->
            <div class="input-icon">
                <i class="fa fa-font"></i>
                {{ form.first_name }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-full-name" type="text" placeholder="Full Name" name="first_name" /> -->
            </div>
            <p class="login-error" id="invalid-full-name">This field is required</p>
        </div>

        <div class="form-group">
            {{ form.last_name.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Full Name</label> -->
            <div class="input-icon">
                <i class="fa fa-font"></i>
                {{ form.last_name }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-full-name" type="text" placeholder="Full Name" name="first_name" /> -->
            </div>
            <p class="login-error" id="invalid-full-name">This field is required</p>
        </div>

        <div class="form-group">
            {{ form.email.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Email</label> -->
            <div class="input-icon">
                <i class="fa fa-envelope"></i>
                {{ form.email }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-email" type="text" placeholder="Email" name="email" /> -->
            </div>
            <p class="login-error" id="invalid-email">This field is required</p>
        </div>

        <div class="form-group">
            {{ form.address.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Address</label> -->
            <div class="input-icon">
                <i class="fa fa-check"></i>
                {{ form.address }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-address" type="text" placeholder="Address" name="address" /> -->
            </div>
            <p class="login-error" id="invalid-address">This field is required</p>
        </div>
        <div class="form-group">
            {{ form.city.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">City/Town</label> -->
            <div class="input-icon">
                <i class="fa fa-location-arrow"></i>
                {{ form.city }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-city" type="text" placeholder="City/Town" name="city" /> -->
            </div>
            <p class="login-error" id="invalid-city">This field is required</p>
        </div>
        <div class="form-group">
            <!-- <label class="control-label visible-ie8 visible-ie9">Country</label> -->
            {{ form.country.label_tag }}
            {{ form.country }}
            <!-- <select name="country" id="select2_sample4" class="select2 form-control">
                <option value=""></option>
                <option value="AF">Afghanistan</option>
                <option value="AL">Albania</option>
                <option value="DZ">Algeria</option>
                <option value="AS">American Samoa</option>
                <option value="AD">Andorra</option>
                <option value="AO">Angola</option>
                <option value="AI">Anguilla</option>
                <option value="AR">Argentina</option>
            </select> -->
            <p class="login-error" id="invalid-country">This field is required</p>
        </div>
        <p>
            Enter your account details below:
        </p>
        <div class="form-group">
            {{ form.username.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Username</label> -->
            <div class="input-icon">
                <i class="fa fa-user"></i>
                {{ form.username }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-username" type="text" autocomplete="off" placeholder="Username" name="username" /> -->
            </div>
            <p class="login-error" id="invalid-username">This field is required</p>
        </div>
        <div class="form-group">
            {{ form.password1.label_tag}}
            <!-- <label class="control-label visible-ie8 visible-ie9">Password</label> -->
            <div class="input-icon">
                <i class="fa fa-lock"></i>
                {{ form.password1 }}
                <!-- <input class="form-control placeholder-no-fix" id="signup-password" type="password" autocomplete="off" id="register_password" placeholder="Password" name="password1" /> -->
            </div>
            <p class="login-error" id="invalid-password">This field is required</p>
        </div>
        <div class="form-group">
            {{ form.password2.label_tag }}
            <!-- <label class="control-label visible-ie8 visible-ie9">Re-type Your Password</label> -->
            <div class="controls">
                <div class="input-icon">
                    <i class="fa fa-check"></i>
                    {{ form.password2 }}
                    <!-- <input class="form-control placeholder-no-fix" type="password" autocomplete="off" placeholder="Re-type Your Password" name="password2" /> -->
                </div>
            </div>
        </div>
        <div class="form-group">
            <label></label>
                <input type="checkbox" id="tnc" name="tnc" /> I agree to the <a href="termsofservice.html" target="_blank">
        Terms of Service </a> and <a href="privacypolicy.html" target="_blank">
        Privacy Policy </a>

            <div id="register_tnc_error">
            </div>
            <p class="login-error" id="invalid-tnc">Please check that you have read and agree to the Terms & Conditions</p>
        </div>
        {% if redirect_field_value %}
          <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
        {% endif %}
        <div class="form-actions">
            <button id="register-back-btn" type="button" class="btn">
                <i class="m-icon-swapleft"></i> Back </button>
            <button type="submit" id="register-submit-btn" class="btn blue pull-right">
                Sign Up <i class="m-icon-swapright m-icon-white"></i>
            </button>
        </div>
    </form>
    <!-- END REGISTRATION FORM -->

我按照django文档正确遵循的所有其他步骤。

Customed注册表单类是:

class MySignupForm(forms.Form):
required_css_class = 'required'
curyear = datetime.now().year
image = forms.ImageField(required=False,label='Profile Image')
first_name = forms.CharField(max_length=30, label='Full Name', widget=forms.TextInput(attrs={'name':'first_name','placeholder': 'First Name','autofocus': 'autofocus','id':'signup-full-name'}))
last_name = forms.CharField(max_length=30, label='Last Name', widget=forms.TextInput(attrs={'placeholder': 'Last Name','name':'last_name','id':'signup-full-name'}))
address = forms.CharField( max_length=1024, label="Address", widget=forms.TextInput(attrs={'placeholder': 'Address'}),required=False)
city = forms.CharField( max_length=512, widget=forms.TextInput(attrs={'placeholder': 'City/Town'}),required=True)
country = forms.ChoiceField([i for i in countryAndStateList.countryList], widget=forms.Select(attrs={'id':'select2_sample4', 'class':'select2 form-control'}),required=True)
agreement = forms.BooleanField(required=True,label="")

def __init__(self,*args,**kwargs):
    super(MySignupForm,self).__init__(*args,**kwargs)

def signup(self, request, user):
    print("reached here")
    user.first_name = self.cleaned_data['first_name']
    user.last_name = self.cleaned_data['last_name']
    address = request.POST.get('address','')
    city=request.POST.get('city','')
    country=request.POST.get('country','')
    extendeduser = ExtendedUser(user=user,address=address,city=city,country=country,imageUrl=request.FILES.get('image',''))
    extendeduser.save()

但注册没有发生。如果我在这里做错了,有人可以帮忙。

1 个答案:

答案 0 :(得分:0)

你试过这个吗? 您可以通过

settings.py中指定自定义表单以获取allauth
ACCOUNT_FORMS = {'signup': 'myapp.forms.MySignupForm'}

如果覆盖allauth表单,或

ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.MySignupForm'

如果您为注册创建新表单,请在docs

中简要介绍