如何在 signup_form.html 中添加电子邮件地址 - Django-crispy-forms
How to add email address in signup_form.html - Django-crispy-forms
我的signup_form.html如下,请问有什么办法可以在不改变后端代码views.py的情况下,在这个表单中添加一个email地址吗?,我想让用户填写email他注册时的地址,
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="row">
<div class="col-md-8 col-sm-10 col-12">
<form method="post" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}">
{{ form|crispy }}
<button type="submit" class="btn btn-success">Sign up</button>
</form>
</div>
</div>
{% endblock %}
如果您使用标准内置的 Django 注册表单 - 您可以像这样覆盖它:
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True,
label='Email',
error_messages={'exists': 'Oops'})
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
def clean_email(self):
if User.objects.filter(email=self.cleaned_data['email']).exists():
raise ValidationError(self.fields['email'].error_messages['exists'])
return self.cleaned_data['email']
接下来我想如果你说你没有注册视图(如果我理解正确的话)——你的网址中有类似的字符串:
from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm
urlpatterns = [
path('register/', CreateView.as_view(
template_name='register.html',
form_class=UserCreationForm,
success_url='/')
]
因此您只需将 UserCreationForm
替换为您自定义的 UserCreateForm
即可。
我的signup_form.html如下,请问有什么办法可以在不改变后端代码views.py的情况下,在这个表单中添加一个email地址吗?,我想让用户填写email他注册时的地址,
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="row">
<div class="col-md-8 col-sm-10 col-12">
<form method="post" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}">
{{ form|crispy }}
<button type="submit" class="btn btn-success">Sign up</button>
</form>
</div>
</div>
{% endblock %}
如果您使用标准内置的 Django 注册表单 - 您可以像这样覆盖它:
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True,
label='Email',
error_messages={'exists': 'Oops'})
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
def clean_email(self):
if User.objects.filter(email=self.cleaned_data['email']).exists():
raise ValidationError(self.fields['email'].error_messages['exists'])
return self.cleaned_data['email']
接下来我想如果你说你没有注册视图(如果我理解正确的话)——你的网址中有类似的字符串:
from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm
urlpatterns = [
path('register/', CreateView.as_view(
template_name='register.html',
form_class=UserCreationForm,
success_url='/')
]
因此您只需将 UserCreationForm
替换为您自定义的 UserCreateForm
即可。