不用调用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