2

對Django來說相當新,並且對Django註冊有一個疑問。Django註冊限制到特定域名的電子郵件地址

我已經成功地將其註冊並通過電子郵件驗證正確註冊用戶,現在我想要做的是修改功能,以便只允許具有特定域電子郵件地址的用戶註冊。例如,如果「xyz.org」是域名,那麼只有試圖用[email protected]電子郵件註冊的用戶纔會成功。

下面是我迄今爲止處理它的所有相關代碼,減去註冊成功等。我認爲我基本上只需要能夠插入一種驗證電子郵件字段的新型表單對象,但我不確定如何。所有的冗長都非常感謝,因爲我在這方面還有點粗糙。謝謝!

url(r'^accounts/', include('registration.backends.default.urls') 

`

{% block content %} 

{% if form.errors %} 
<p>Reg form errors</p> 
{% endif %} 

<form method="post" action=''> 
{% csrf_token %} 
{{ form.as_p }} 

<input type="submit" value="Send activation email" /> 
</form> 

{% endblock %} 
+0

重寫clean_email方法。請參閱https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-method – dannyroa

回答

3

您將需要繼承registration.forms.RegistrationForm並添加自定義validator的電子郵件領域,一個RegexValidator會工作。

from registration.forms import RegistrationForm 

class NewRegistrationForm(RegistrationForm): 
    def __init__(self, *args, **kwargs): 
     super(NewRegistrationForm, self).__init__(*args, **kwargs) 
     self.fields['email'].validators = [validate_domain] 

當您擁有驗證器和新窗體後,您將不得不使用此新窗體作爲註冊視圖。在您的urls.py

urlpatterns = patterns(
    ... 
    url(r'^register/$', register, { 'form_class': NewRegistrationForm }, name='registration_register') 
    ... 
) 

我沒有測試過這一點,但我希望它讓你在正確的軌道上!

相關問題