如何在base.html django中进行用户注册验证

时间:2017-02-03 12:37:55

标签: python django

不用调用register.html模板。将该代码放在base.html中。 如何使用django在base.html中进行验证? 我怎么能实现这个目标。请帮帮我。

如果我调用register.html模板验证工作正常。我想在base.html中实现。

  

base.html文件

<form method="post" action="{% url 'register' %}"> {% csrf_token %}
            <table border="0"> 
                <label for="name">Name:</label>
              <input type="text" id="username" name="username" value="">
              {{ form.errors.name }}
               <label for="mail">Email:</label>
              <input type="text" id="email" name="email">
              {{ form.errors.email }}
              <label for="password1">Password:</label>
              <input type="password" id="password1" name="password1">
              {{ form.errors.password1 }}

              <label for="password2">Password:</label>
              <input type="password" id="password2" name="password2">
              {{ form.errors.password1 }}
            </table>
        <button type="submit" value="Register">Register</button>
        <button type="button" onclick="window.location.href='/' ">Login</button>
    </form>
  

forms.py

class RegistrationForm(forms.Form):

    username = forms.RegexField(regex=r'^\w+$', widget=forms.TextInput(attrs=dict(required=True, max_length=30)), label=_("Username"), error_messages={ 'invalid': _("This value must contain only letters, numbers and underscores.") })
    email = forms.EmailField(widget=forms.TextInput(attrs=dict(required=True, max_length=30)), label=_("Email address"))
    password1 = forms.CharField(widget=forms.PasswordInput(attrs=dict(required=True, max_length=30, render_value=False)), label=_("Password"))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs=dict(required=True, max_length=30, render_value=False)), label=_("Password (again)"))

    def clean_username(self):
        try:
            user = User.objects.get(username__iexact=self.cleaned_data['username'])
        except User.DoesNotExist:
            return self.cleaned_data['username']
        raise forms.ValidationError(_("The username already exists. Please try another one."))

    def clean(self):
        if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                raise forms.ValidationError(_("The two password fields did not match."))
        return self.cleaned_data

0 个答案:

没有答案