限制用户使用特定域注册:django [英] Restrict user to use a specific domain to sign up : django

查看:120
本文介绍了限制用户使用特定域注册:django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个Django新手。



我想限制用户使用特定的域名(例如@ gmail.com)注册我的Django网站,但是如何自定义EmailField在我的注册表中呢?



FYI,这是我的代码。



forms.py


$ b $


$ b username = forms.CharField(label =(u'User Name'))
email = forms.EmailField(label =(u'Email Adress'))


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

register.html

  %extendsbase.html%} 
{%block content%}
< form action =method =post>
{%csrf_token%}
{%if form.errors%}< p>请更正以下字段< / 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%}>用户名:< / 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%}>电子邮件:< label>< p>
< p> {{form.email}}< / p>
< / div>

< p>< input type =submitalt =register/>< / p>
< / form>
{%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']
如果@ gmail.com不在数据中:#任何支票你需要
raise forms.ValidationError(必须是gmail地址)
返回数据

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

更多信息: https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute


I'm a Django newbie.

I'd like to restrict user to use a specific domain (e.g. @gmail.com ) to sign up my Django website, but how to customize the EmailField in my registration form to do that?

FYI, here's my codes.

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 %}

解决方案

You can write your own clean functions for the form:

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',)

More at: https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

这篇关于限制用户使用特定域注册:django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆