Django中建立使用者並與資料庫中驗證是否存在此使用者
阿新 • • 發佈:2018-12-14
首先建立一個註冊使用者的程式:
def register(request): #校驗請求方式,進入不同的處理函式 if request.method == 'GET': return render(request,'index.html',) elif request.method == 'POST': '''獲取前端頁面的資料''' print('進入') user_name = request.POST.get('username') password = request.POST.get('password') cpassword = request.POST.get('cpassword') emai = request.POST.get('email') #判斷資料是否為空 if not all([user_name, password, cpassword, emai]): return render(request, 'index.html') #判斷郵箱是否規範 if not re.match(r'^([a-zA-Z0-9_-])
[email protected]([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$', emai): return render(request, 'index.html',{'errmsg':'郵箱不符合規範'}) #判斷是否重複操作 #判斷郵箱: try: user_email = UserInfo.objects.filter(email__exact = emai ) print(user_email) except Exception as e: user_email = None if user_email: return render(request, 'index.html', {'errmsg': '郵箱已經被使用'}) #判斷使用者名稱 try: user = UserInfo.objects.get(username = user_name) except Exception as e: user = None if user: return render(request, 'index.html', {'errmsg': '使用者名稱已經被使用'}) #建立一個使用者物件 user = UserInfo.objects.create_user(username=user_name, email=emai, password=password) #create_user 自帶檢查是否重複 # create_user(self, username, email=None, password=None, #講啟用標誌設定為0 user.is_active = 0 user.save() print('提交成功') return render(request, 'index.html')
第二步,進行資料庫的校驗:
class RegisterView(View):
def get(self,request):
return render(request, 'index.html')
def post(self,request):
#獲取使用者輸入的資訊
user_name = request.POST.get('username')
password = request.POST.get('password')
cpassword = request.POST.get('cpassword')
email = request.POST.get('email')
'''判斷資料是否為空'''
if not all([user_name, password, cpassword, email]):
return render(request, 'index.html')
if not re.match(r'^([a-zA-Z0-9_-]) [email protected]([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$', email):
return render(request, 'index.html', {'errmsg': '郵箱不符合規範'})
try:
user = UserInfo.objects.filter(email__exact=email)
(UserInfo是資料庫裡面存放使用者資訊的一張表,filter是模糊查詢,去匹配資料庫裡面的資訊)
except Exception as e:
user = None
if user:
return render(request, 'index.html', {'errmsg': '郵箱已經被使用'})
'''判斷使用者名稱'''
try:
usern = UserInfo.objects.get(username=user_name)
except Exception as e:
usern = None
if usern:
return render(request, 'index.html', {'errmsg': '使用者名稱已經被使用'})
'''建立一個使用者物件'''
user = UserInfo.objects.create_user(username=user_name, password=password, email=email)
# create_user(self, username, email=None, password=None,
'''將啟用標誌設定為0'''
user.is_active = 0
user.save()
print('提交成功')