限制用户使用特定域注册:django

限制用户使用特定域注册:django,django,django-forms,django-templates,Django,Django Forms,Django Templates,我是Django新手 我想限制用户使用特定域(例如@gmail.com)来注册我的Django网站,但如何在我的注册表单中自定义EmailField来实现这一点 仅供参考,这是我的密码 forms.py class RegistrationForm(ModelForm): username = forms.CharField(label=(u'User Name')) email = forms.EmailField(label = (u'Email Adress'))

我是Django新手

我想限制用户使用特定域(例如@gmail.com)来注册我的Django网站,但如何在我的注册表单中自定义EmailField来实现这一点

仅供参考,这是我的密码

forms.py

class RegistrationForm(ModelForm):
    username = forms.CharField(label=(u'User Name'))
    email = forms.EmailField(label = (u'Email Adress'))


    class Meta:
        model = UserProfile
        exclude = ('user',)
register.html

{% extends "base.html" %}
{% block content %}
<form action = "" method ="post">
{% csrf_token%}
{% if form.errors %}  <p>Please correct the following fields</p> {% endif %}
<div class  ="register_div">
    {% if form.username.errors %}<p class="error">{{ form.username.errors }}</p>{% endif %}
    <p><label for="username"{% if form.username.errors %} class="error"{% endif %}>Username:</label></p>
    <p>{{ form.username }}</p>
</div>
<div class  ="register_div">
    {% if form.email.errors %}<p class = "error">{{ form.email.errors }}</p>{% endif %}
     <p><label for ="email"{% if form.email.errors %} class="error"{% endif %}>Email:<label><p>
    <p>{{ form.email }}</p>
</div>

<p><input type="submit" alt="register" /></p>
</form>
{% endblock %}
{%extends“base.html”%}
{%block content%}
{%csrf_令牌%}
{%if form.errors%}请更正以下字段

{%endif%} {%if-form.username.errors%}

{{{form.username.errors}

{%endif%} 用户名:

{{form.username}

{%if-form.email.errors%}

{{{form.email.errors}

{%endif%} 电子邮件: {{form.email}

{%endblock%}
您可以为表单编写自己的干净函数:

class RegistrationForm(ModelForm):
    username = forms.CharField(label=(u'User Name'))
    email = forms.EmailField(label = (u'Email Adress'))

    def clean_email(self):
        data = self.cleaned_data['email']
        if "@gmail.com" not in data:   # any check you need
            raise forms.ValidationError("Must be a gmail address")
        return data

    class Meta:
        model = UserProfile
        exclude = ('user',)

更多信息请访问:

您可以通过HTML5输入标记属性(模式)实现相同的功能。例如,假设您的域是foo.com,那么代码将是:

<input id="email" type="email" pattern="[a-z.]*[@]\bfoo.com" required>
document.getElementById('email').setCustomValidity("Please use an @foo.com email address.");