在使用Django構建的網站註冊期間,是否有簡單的方法來強制使用唯一的電子郵件地址? 我見過一些「插件?」像HMAC,但它似乎有點太複雜,我試圖實現。在Django註冊期間強制使用唯一的電子郵件地址
此外,是否有可能只接受來自域名列表的註冊? (如只有來自「@ google.com」的電子郵件)
在使用Django構建的網站註冊期間,是否有簡單的方法來強制使用唯一的電子郵件地址? 我見過一些「插件?」像HMAC,但它似乎有點太複雜,我試圖實現。在Django註冊期間強制使用唯一的電子郵件地址
此外,是否有可能只接受來自域名列表的註冊? (如只有來自「@ google.com」的電子郵件)
我遇到了同樣的問題,並通過將AbstractUser
類擴展到我自己的類MyUser
並更改默認值來解決此問題。
然後,通過將此類MyUser
作爲我所有用戶的默認模型類,我可以將此屬性(唯一電子郵件)應用於我的所有用戶在我的Web應用程序上。
創建應用程序myuser。有在models.py:
from django.contrib.auth.models import AbstractUser
#create your own user class.
class MyUser(AbstractUser):
def __init__(self, *args, **kwargs):
self._meta.get_field('email').blank = False
self._meta.get_field('email')._unique = True
super(MyUser, self).__init__(*args, **kwargs)
#Changed the defaults above.
#Give any additional field you want to associate your user with.
注:AbstractUser已經擁有所有你想要的用戶模型有基本字段。例如:用戶名,密碼,電子郵件等。檢查所有人here。
,你會想要做的最後一件事是添加下面你setting.py
AUTH_USER_MODEL = 'myuser.MyUser'
這將確保默認用戶與你的web應用程序相關聯的是擴展(修改)MyUser
類。這將爲您提供django爲User
提供的所有基本功能。
request.user
等我想建議你可能需要一些額外的代碼(在形式.py和views.py)通過這種類創建用戶。我希望你能解決這個問題。這應該足以引導你朝着正確的方向前進。
也許一個圖書館會有所幫助,但既然你需要一個電子郵件域的認證,我認爲這應該會有訣竅。在我看來,你不能總是依靠第三方庫來實現其他功能。
最後,你問驗證用戶只能從像@ gmail.com或@ outlook.com域,在你的Django形式的清潔方法會做的伎倆一個簡單的檢查來了。我希望你知道如何處理Django表單。如果沒有,那麼你可以在官方文檔中瞭解它們。它們是Django的重要組成部分。
你可以利用這個邏輯檢查電子郵件:
email = self.cleaned_data['email']
email_source = email.split('@')[-1]
#email_source will now have values like: gmail.com, outlook.com etc
#you can now validate email_source now like:
permitted_sources = ['gmail.com' , 'outlook.com' , ]
if email_source in permitted_sources:
return cleaned_data
else:
raise forms.ValidationError('Error Message')
#Note: This logic should be kept in your clean method.
我希望這將引導您。謝謝。
現在,這是一個指導!非常感謝你!!將盡快工作。 – willer2k