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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

天天生鲜(Python)Django项目学习资料(视频、源码)

發(fā)布時(shí)間:2023/12/10 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天天生鲜(Python)Django项目学习资料(视频、源码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目展示

資料說明

全套視頻教程,源碼詳細(xì)注釋等,如下方式獲取:

天天生鮮(Python)Django項(xiàng)目學(xué)習(xí)資料(視頻、源碼)

部分源碼

from django.shortcuts import render,redirect from django.core.urlresolvers import reverse from django.core.mail import send_mail from django.contrib.auth import authenticate, login from django.views.generic import View from django.http import HttpResponse from django.conf import settingsfrom user.models import User from celery_tasks.tasks import send_register_active_email from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from itsdangerous import SignatureExpired import re import time # Create your views here.# /user/register # GET POST PUT DELETE OPTION def register(request):'''注冊(cè)'''if request.method == 'GET':# 顯示注冊(cè)頁(yè)面return render(request, 'register.html')else:# 進(jìn)行注冊(cè)處理# 接收數(shù)據(jù)username = request.POST.get('user_name')password = request.POST.get('pwd')email = request.POST.get('email')allow = request.POST.get('allow')# 進(jìn)行數(shù)據(jù)校驗(yàn)if not all([username, password, email]):# 數(shù)據(jù)不完整return render(request, 'register.html', {'errmsg': '數(shù)據(jù)不完整'})# 校驗(yàn)郵箱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': '請(qǐng)同意協(xié)議'})# 校驗(yàn)用戶名是否重復(fù)try:user = User.objects.get(username=username)except User.DoesNotExist:# 用戶名不存在user = Noneif user:# 用戶名已存在return render(request, 'register.html', {'errmsg': '用戶名已存在'})# 進(jìn)行業(yè)務(wù)處理: 進(jìn)行用戶注冊(cè)u(píng)ser = User.objects.create_user(username, email, password)user.is_active = 0user.save()# 返回應(yīng)答, 跳轉(zhuǎn)到首頁(yè)return redirect(reverse('goods:index'))def register_handle(request):'''進(jìn)行注冊(cè)處理'''# 接收數(shù)據(jù)username = request.POST.get('user_name')password = request.POST.get('pwd')email = request.POST.get('email')allow = request.POST.get('allow')# 進(jìn)行數(shù)據(jù)校驗(yàn)if not all([username, password, email]):# 數(shù)據(jù)不完整return render(request, 'register.html', {'errmsg':'數(shù)據(jù)不完整'})# 校驗(yàn)郵箱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':'請(qǐng)同意協(xié)議'})# 校驗(yàn)用戶名是否重復(fù)try:user = User.objects.get(username=username)except User.DoesNotExist:# 用戶名不存在user = Noneif user:# 用戶名已存在return render(request, 'register.html', {'errmsg':'用戶名已存在'})# 進(jìn)行業(yè)務(wù)處理: 進(jìn)行用戶注冊(cè)u(píng)ser = User.objects.create_user(username, email, password)user.is_active = 0user.save()# 返回應(yīng)答, 跳轉(zhuǎn)到首頁(yè)return redirect(reverse('goods:index'))# /user/register class RegisterView(View):'''注冊(cè)'''def get(self, request):'''顯示注冊(cè)頁(yè)面'''return render(request, 'register.html')def post(self, request):'''進(jìn)行注冊(cè)處理'''# 接收數(shù)據(jù)username = request.POST.get('user_name')password = request.POST.get('pwd')email = request.POST.get('email')allow = request.POST.get('allow')# 進(jìn)行數(shù)據(jù)校驗(yàn)if not all([username, password, email]):# 數(shù)據(jù)不完整return render(request, 'register.html', {'errmsg': '數(shù)據(jù)不完整'})# 校驗(yàn)郵箱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': '請(qǐng)同意協(xié)議'})# 校驗(yàn)用戶名是否重復(fù)try:user = User.objects.get(username=username)except User.DoesNotExist:# 用戶名不存在user = Noneif user:# 用戶名已存在return render(request, 'register.html', {'errmsg': '用戶名已存在'})# 進(jìn)行業(yè)務(wù)處理: 進(jìn)行用戶注冊(cè)u(píng)ser = User.objects.create_user(username, email, password)user.is_active = 0user.save()# 發(fā)送激活郵件,包含激活鏈接: http://127.0.0.1:8000/user/active/3# 激活鏈接中需要包含用戶的身份信息, 并且要把身份信息進(jìn)行加密# 加密用戶的身份信息,生成激活tokenserializer = Serializer(settings.SECRET_KEY, 3600)info = {'confirm':user.id}token = serializer.dumps(info) # bytestoken = token.decode()# 發(fā)郵件send_register_active_email.delay(email, username, token)# 返回應(yīng)答, 跳轉(zhuǎn)到首頁(yè)return redirect(reverse('goods:index'))class ActiveView(View):'''用戶激活'''def get(self, request, token):'''進(jìn)行用戶激活'''# 進(jìn)行解密,獲取要激活的用戶信息serializer = Serializer(settings.SECRET_KEY, 3600)try:info = serializer.loads(token)# 獲取待激活用戶的iduser_id = info['confirm']# 根據(jù)id獲取用戶信息user = User.objects.get(id=user_id)user.is_active = 1user.save()# 跳轉(zhuǎn)到登錄頁(yè)面return redirect(reverse('user:login'))except SignatureExpired as e:# 激活鏈接已過期return HttpResponse('激活鏈接已過期')# /user/login class LoginView(View):'''登錄'''def get(self, request):'''顯示登錄頁(yè)面'''# 判斷是否記住了用戶名if 'username' in request.COOKIES:username = request.COOKIES.get('username')checked = 'checked'else:username = ''checked = ''# 使用模板return render(request, 'login.html', {'username':username, 'checked':checked})def post(self, request):'''登錄校驗(yàn)'''# 接收數(shù)據(jù)username = request.POST.get('username')password = request.POST.get('pwd')# 校驗(yàn)數(shù)據(jù)if not all([username, password]):return render(request, 'login.html', {'errmsg':'數(shù)據(jù)不完整'})# 業(yè)務(wù)處理:登錄校驗(yàn)user = authenticate(username=username, password=password)if user is not None:# 用戶名密碼正確if user.is_active:# 用戶已激活# 記錄用戶的登錄狀態(tài)login(request, user)# 跳轉(zhuǎn)到首頁(yè)response = redirect(reverse('goods:index'))# 判斷是否需要記住用戶名remember = request.POST.get('remember')if remember == 'on':# 記住用戶名response.set_cookie('username', username, max_age=7*24*3600)else:response.delete_cookie('username')# 返回responsereturn responseelse:# 用戶未激活return render(request, 'login.html', {'errmsg':'賬戶未激活'})else:# 用戶名或密碼錯(cuò)誤return render(request, 'login.html', {'errmsg':'用戶名或密碼錯(cuò)誤'})

總結(jié)

以上是生活随笔為你收集整理的天天生鲜(Python)Django项目学习资料(视频、源码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。