日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

天天生鲜项目 python邮箱_Django之天天生鲜项目

發布時間:2023/12/10 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天天生鲜项目 python邮箱_Django之天天生鲜项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

準備工作

1、配置settings.py內置文件

注意: AUTH_USER_MODEL配置參數要在第一次遷移數據庫之前配置,否則可能django的認證系統工作不正常

2、創建應用

3、配置主路由

一、用戶注冊

1、創建用戶注冊model模型

1)設置模型抽象類

2)進入user應用設置model

這里使用的是django內部AbstractUser用戶類

2、顯示用戶注冊頁面

方法一:使用FBV請求處理

FBV:(function base views)?就是在視圖里使用函數處理請求。

1)定義路由

import . import views

url(r'^register$', views.register, name='register')

2)定義注冊的視圖函數

import re

from django.shortcuts import render, redirect

from .models import User

from django.core.urlresolvers import reverse

def register(request):

'''顯示注冊頁面'''

if request.method == 'GET':

return render(request, 'register.html')

else:

username = request.POST.get('user_name')

password = request.POST.get('pwd')

email = request.POST.get('email')

allow = request.POST.get('allow')

# 進行數據校驗

if not all([username, password, email]):

# 數據不完整

return render(request, 'register.html', {'errmsg': '數據不完整'})

# 郵箱校驗

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': '用戶名已存在'})

# 進行業務處理:用戶注冊

user = User.objects.create_user(username, email, password)

user.is_active = 0

user.save()

# 返回應答,跳轉到首頁

return redirect(reverse('goods:index'))

方法二:使用CBV請求處理(推薦)

CBV(class base views)?就是在視圖里使用類處理請求。

1)定義路由

url(r'^register$', RegisterView.as_view(), name='register'), # 注冊

2)定義注冊視圖類

import re

from django.shortcuts import render, redirect

from .models import User

from django.core.urlresolvers import reverse

from django.views.generic import View

from django.conf import settings

from django.http import HttpResponse

class RegisterView(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')

email = request.POST.get('email')

allow = request.POST.get('allow')

# 進行數據校驗

if not all([username, password, email]):

# 數據不完整

return render(request, 'register.html', {'errmsg': '數據不完整'})

# 郵箱校驗

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': '用戶名已存在'})

# 進行業務處理:用戶注冊

user = User.objects.create_user(username, email, password)

user.is_active = 0

user.save()

# 返回應答,跳轉到首頁

return redirect(reverse('goods:index'))

3)激活郵箱

1)下載加密簽名數據包

2)設置路由,編寫代碼邏輯

class ActiveView(View):

"""用戶激活"""

def get(self, request, token):

"""進行用戶激活"""

# 進行解密 獲取要激活的用戶信息

serializer = Serializer(settings.SECRET_KEY, 3600)

try:

info = serializer.loads(token)

# 獲取待激活用戶的id

user_id = info['confirm']

# 根據id獲取用戶信息

user = User.objects.get(id=user_id)

user.is_active = 1

user.save()

# 跳轉到登錄頁面

return redirect(reverse('user:login'))

except SignatureExpired as e:

# 激活鏈接已過期

return HttpResponse('激活鏈接已過期')

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired

from django.core.mail import send_mail

# 發送激活郵件 包含激活鏈接:Http://127.0.0.1:8000/user/active/3

# 激活鏈接中需要包含用戶的身份信息 并且要把身份信息進行加密

# 加密用戶的身份信息 生成激活token

class Register(View):

...

serializer = Serializer(settings.SECRET_KEY, 3600)

info = {'confirm': user.id}

token = serializer.dumps(info)

token = token.decode('utf-8')

4)發送郵箱

流程:Django網站--->smtp服務器--->目的郵箱

配置settings.py

class Register(View):

...

# 發郵箱

subject = '天天生鮮歡迎信息'

message = '郵件正文'

sender = settings.EMAIL_FROM

receiver = [email]

html_message = f'

{username},歡迎您成為天天生鮮注冊會員

請點擊下面鏈接激活您的賬戶' \

f'http://127.0.0.1:8000/user/active/{token}'

send_mail(subject, message, sender, receiver, html_message=html_message)

總結

以上是生活随笔為你收集整理的天天生鲜项目 python邮箱_Django之天天生鲜项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。