django實現利用郵箱進行登入

2021-08-21 09:53:40 字數 2396 閱讀 2642

專案工作中,有時候的登入方式不僅僅限於使用使用者名稱登入,有時候客戶還會要求進行郵箱或手機號進行登入。

接下來我們就一起看看是怎麼實現的吧!

1、首先我們需要在我們的配置檔案中新增上以下**(指定後端認證):

authentication_backends = (

'django.contrib.auth.backends.modelbackend',

)

2、接下來我們就要自己重新定義認證的方法啦:

我這裡給使用者新增了新的字段

from django.db import models

from django.contrib.auth.models import abstractuser, group, permission, user

# 使用者

class user(abstractuser):

phone_number = models.charfield(max_length=40, blank=false, null=true, verbose_name=u'手機號')

qq_number = models.charfield(max_length=40, blank=false, null=true, verbose_name=u'qq號')

class meta:

managed = true

db_table = 'auth_user'

view中重新寫認證方法

from django.contrib.auth.backends import modelbackend

from system.models import user # 為自己定義新增的

# 重寫登入驗證方法,支援賬戶名和郵箱登入,可擴充套件其他登入

class custombackend(modelbackend):

def authenticate(self, request, username=none, password=none):

try:

user = user.objects.get(q(username=username) | q(email=username))

if user.check_password(password):

return user

except exception as e:

return none

接下來在登入的時候,加入自定義的認證方法

def system_login(request):

if request.method == "post":

login_form = loginform(request.post)

if login_form.is_valid():

username = login_form.cleaned_data['username']

password = login_form.cleaned_data['password']

authentication = custombackend()

user = authentication.authenticate(request, username=username, password=password) # 驗證user

if user is not none:

if user.is_active:

user.backend = 'django.contrib.auth.backends.modelbackend' # 給user手動新增backend

auth.login(request, user) # 登入

errmsg = "使用者未啟用,請啟用後重新登入。"

return render(request, "system/login.html", locals())

else:

errmsg = "賬號密碼資訊有誤,請重新輸入。"

return render(request, "system/login.html", locals())

else:

return render(request, "system/login.html")

else:

return render(request, "system/login.html")

切記一定要手動新增backend方法哦

到此,使用者既可以通過使用者名稱登入又可以通過郵箱登入啦,需要的小可愛們,動手試試吧!

django實現利用mailgun進行收發郵件

def email request if request.method post form contactform request.post 獲取post表單 if form.is valid message 感謝你的來信,我們會盡快回覆你 user name form.cleaned data u...

Django使用郵箱進行驗證操作的實現方法

其實驗證方法比較簡單,只需要傳送指定的鏈結給目標郵箱,使用者點選鏈結即可通過驗證,但是合成和驗證這個指定的鏈結需要我們來處理,我用到的方法是,當使用者申請郵箱驗證的時候根據其郵箱位址和乙個32位隨機驗證碼去合成乙個連線,當正常訪問的使用後台可通過url獲取郵箱名以及驗證碼,再根據這兩個值去資料庫中匹...

Django基於cookies實現完整登入

django admin startproject mysite建立完成後目錄構如下 開啟mysite mysite settings.py檔案,將應用新增進去 django.contrib.admin django.contrib.auth django.contrib.contenttypes ...