用戶模塊
實作:
注冊----登錄 功能 驗證
這里views.py使用類方法
from django.conf.urls import url from users import views urlpatterns = [ url(r'^register', views.RigisterView.as_view(),name='register'), ]
class RigisterView(View): def get(self,request): return render(request,'register.html') def post(self,request): # 獲取注冊資訊 username = request.POST.get('user_name') password = request.POST.get('pwd') cpassword = request.POST.get('cpwd') email = request.POST.get('email') allow = request.POST.get('allow') # 資料處理 驗證資料完整性 if not all([username, password, cpassword, email, allow]): return render(request, 'register.html', {'errmsg': '資料不完整'}) # 驗證密碼是否一致 if password != cpassword: return render(request, 'register.html', {'errmsg': '密碼不一致'}) # 驗證郵箱 # [\w\.\-]+ 指一個或多個[\w\.\-] 這樣的字符,如 "aaa" "-ab" "c" "s._-l" if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return render(request, 'register.html', {'errmsg': '郵箱格式不正確'}) # 驗證是否勾選協議 if allow != 'on': return render(request, 'register.html', {'errmsg': '請同意協議'}) # 驗證用戶名是否存在(這里使用不重復戶用名) try: user = User.objects.get(username=username) except User.DoesNotExist: user = None # 如果不存在 賦值為空 if user: # 如果存在 return render(request, 'register.html', {'errmsg': '用名已存在'}) # 保存到資料庫 mysql user = User.objects.create_user(username, email, password) user.is_active = False # 0 也可以 郵箱未驗證設定為0 user.save() # 郵箱激活 # 獲取token token = user.gennerate_activeate_token() # 發送郵件 celery_send_email.delay(email,token) return render(request, 'login.html')
注冊 --------- 功能 mysql.......celery.....redis........
這里使用 異步郵箱驗證(celery) 前面有講到 異步實作的方法
代理redis 庫4的資訊 
填寫注冊資訊
mysql查看注冊資訊 
收到激活鏈接

接下來就是要實作郵箱驗證 active
from django.conf.urls import url from users import views urlpatterns = [ url(r'^activate(?P<token>.+)/', views.activate,name='activate'), ]
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
def activate(request,token): serializer = Serializer(settings.SECRET_KEY,3600) # 設定3600秒過期 try: json_str = serializer.loads(token) except: return HttpResponse('連接已過期') user_id = json_str['confirm']try: user = User.objects.get(id=user_id) except User.DoesNotExist: return HttpResponse('賬號存在例外') #郵箱驗證通過 修改 user.is_active = True user.save() return render(request,'login.html')
后期要用它來 登錄驗證

.....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/174402.html
標籤:其他
