Django - показывать и проверять домены электронной почты в регистрационной форме
Я использую crispy forms для отображения регистрационной формы и у меня проблема с label_suffix в моей форме, потому что он не отображается в файле register.html. Когда я меняю {{form|crispy}}
на {{form}}
, тогда я могу его увидеть. Подскажите, пожалуйста, что я делаю не так.
Более того, я хочу ограничить домены электронной почты, которые будет принимать моя система регистрации, и я хочу проверить, является ли электронная почта @companyname.com, @companyname2.com, @companyname3.com и она будет принимать только эти электронные письма в процессе регистрации. Подскажите, пожалуйста, как я могу это сделать?
register.html
<form method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-secondary">Register</button>
</form>
views.py
class SignUpView(View):
form_class = SignUpForm
template_name = 'user/register.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False # Deactivate account till it is confirmed
user.save()
current_site = get_current_site(request)
subject = 'Activate Your Account'
message = render_to_string('user/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject, message)
messages.success(request, ('Please Confirm your email to complete registration.'))
return redirect('login')
return render(request, self.template_name, {'form': form})
forms.py
TRUSTED_EMAILS = ['@companyname.com','@companyname2.com', '@companyname3.com']
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False, help_text='Optional')
last_name = forms.CharField(max_length=30, required=False, help_text='Optional')
email = forms.EmailField(max_length=254, help_text='Enter a valid email address',label_suffix=TRUSTED_EMAILS) # here I want to have dropdown list so user can select proper domain
captcha = ReCaptchaField()
class Meta:
model = User
fields = [
'username',
'first_name',
'last_name',
'email',
'password1',
'password2',
'captcha'
]
И я хочу видеть нечто подобное, но в виде выпадающего списка: