from django.contrib.auth.handlers.modwsgi import check_password
from django.contrib.auth.hashers import make_password
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
from django.shortcuts import render, redirect, get_object_or_404
from app01.models import UserInfo, Students
from app01.utils.helper import check_code
from .form import MyLoginModelForm, RegisterForm, MyStudentsModelForm
from app01.utils.encrypt import md5
from app01.utils.encrypt import EncryptionUtilWithDjango
from django.db.models import Q
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
# Create your views here.视图函数
def index(request):
return render(request, "index.html")
def login(request):
if request.method == 'GET':
# pass
# 窗口类
form = MyLoginModelForm()
return render(request, 'login.html', {'form': form})
else: # post
form = MyLoginModelForm(data=request.POST)
if form.is_valid():
username = request.POST.get('username')
pwd = request.POST.get('pwd') # 获取用户输入的明文密码
print(form.cleaned_data['username'], form.cleaned_data['pwd'])
# 判断验证码是否正确
image_code = request.session.get("image_code")
if not image_code:
form.add_error("code", "验证码已过期")
return render(request, 'login.html', {"form": form})
if image_code.upper() != form.cleaned_data['code'].upper():
form.add_error("code", "验证码错误")
return render(request, 'login.html', {"form": form})
# 验证码正确,去数据库校验用户名和密码
pwd = md5(pwd)
obj_user = UserInfo.objects.filter(username=username, password=pwd).first() # 获取用户信息
if obj_user: # 使用check_password()方法进行密码验证
request.session['id'] = obj_user.id
return redirect('slist')
else:
error = '用户名或密码不正确'
return render(request, 'login.html', {'form': form, 'error': error})
else:
return render(request, 'login.html', {'form': form})
def image_code(request):
print('enter image_code')
# 1.生成图片
image_object, code_str = check_code()
# 2.图片内容返回写入内存,从内存读取并返回
from io import BytesIO
stream = BytesIO()
image_object.save(stream, 'png')
# 3.图片的内容写入session中 + 60s
request.session['image_code'] = code_str
request.session.set_expiry(60)
return HttpResponse(stream.getvalue())
def register(request):
if request.method == 'POST':
form = RegisterForm(request.POST, request.FILES)
if form.is_valid():
avatar = request.FILES.get('avatar')
# 加密密码
password = md5(form.cleaned_data['password'])
if avatar:
fs = FileSystemStorage(location='media/avatars')
filename = fs.save(avatar.name, avatar)
avatar_url = fs.url(filename)
else:
avatar_url = None
# 创建用户
user = UserInfo.objects.create(
username=form.cleaned_data['username'],
password=password,
limits=form.cleaned_data['limits'],
avatar=avatar_url
)
# 跳转到登录页面
return redirect('login')
else:
print(request.POST)
print(form.errors)
else:
form = RegisterForm()
return render(request, 'register.html', {'form': form})
def stu_list(request):
student_list = Students.objects.all()
paginator = Paginator(student_list, 7)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, 'stu_list.html', {'page_obj': page_obj})
# return render(request, 'stu_list.html', {"students": student_list})
def stu_add(request):
if request.method == 'GET':
form = MyStudentsModelForm()
return render(request, 'stu_add.html', {'form': form})
else: # post请求
form = MyStudentsModelForm(data=request.POST)
if form.is_valid():
form.save()
print('save success!')
return redirect('slist')
else:
print('验证出错!', form.errors)
return render(request, 'stu_add.html', {'form': form})
def stu_mod(request, sid):
stu_obj = Students.objects.filter(sid=sid).first()
if request.method == 'GET':
form = MyStudentsModelForm(instance=stu_obj)
return render(request, 'stu_mod.html', {'form': form})
form = MyStudentsModelForm(data=request.POST, instance=stu_obj)
if form.is_valid():
form.save()
return redirect('slist')
else:
return render(request, 'stu_mod.html', {'form': form})
def stu_del(request, sid):
Students.objects.filter(sid=sid).delete()
return redirect('slist')
def stu_search(request):
item = request.GET.get('item', '')
query = request.GET.get('query', '')
page_number = request.GET.get('page', 1)
# if 有值会执行第一个分支,永远不会进入第二个分支,所以and不能放中间
if item and query:
students_list = Students.objects.filter(Q(name__icontains=item) & Q(sid__icontains=query))
elif item:
students_list = Students.objects.filter(Q(name__icontains=item))
request.session.pop('query', None)
elif query:
students_list = Students.objects.filter(Q(sid__icontains=query))
else:
students_list = Students.objects.all()
paginator = Paginator(students_list, 10)
page_obj = paginator.get_page(page_number)
context = {
'form': MyStudentsModelForm(),
'page_obj': page_obj,
'item': item,
'query': query
}
return render(request, 'stu_search.html', context)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于python django学生信息管理系统源码.zip (63个子文件)
code
Web_based_SEIMS
__init__.py 0B
wsgi.py 423B
urls.py 2KB
settings.py 4KB
asgi.py 423B
media
image
屏幕截图3.png 945KB
屏幕截图1.png 425KB
f5.jpg 271KB
avatars
f5.jpg 271KB
app01
__init__.py 0B
tests.py 76B
admin.py 66B
migrations
__init__.py 0B
0004_auto_20230513_1716.py 1KB
0003_auto_20230511_1801.py 3KB
0002_auto_20230504_2021.py 800B
0001_initial.py 580B
0005_auto_20230514_1246.py 690B
apps.py 90B
models.py 2KB
utils
helper.py 2KB
loginmidle.py 528B
encrypt.py 3KB
templates
stu_search.html 3KB
register.html 1KB
stu_mod.html 674B
login.html 3KB
layout.html 590B
index.html 765B
stu_list.html 3KB
stu_add.html 3KB
static
plugins
bootstrap-3.4.1-dist
js
bootstrap.js 76KB
npm.js 496B
bootstrap.min.js 39KB
css
bootstrap-theme.min.css.map 74KB
bootstrap.min.css 119KB
bootstrap-theme.css.map 47KB
bootstrap-theme.css 26KB
bootstrap.css.map 382KB
bootstrap.css 149KB
bootstrap-theme.min.css 23KB
bootstrap.min.css.map 528KB
fonts
glyphicons-halflings-regular.svg 106KB
glyphicons-halflings-regular.ttf 44KB
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.woff2 18KB
js
jquery-3.6.0.js 292KB
jquery-3.6.0.min.js 87KB
images
bg2.png 1.7MB
bg3.png 659KB
bg1.png 3.36MB
form.py 1KB
views.py 6KB
.idea
vcs.xml 185B
misc.xml 189B
dataSources.xml 1019B
inspectionProfiles
profiles_settings.xml 179B
Web_based_SEIMS.iml 1KB
modules.xml 289B
.gitignore 184B
manage.py 693B
Monaco.ttf 50KB
共 63 条
- 1
资源评论
FL1768317420
- 粉丝: 4074
- 资源: 4617
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于mysql和python的学生选课系统【课程设计(实验报告+源码)】
- PxCook-像素大厨Windows版本安装包
- aspose-words-23.12-jdk16 有水印
- [大模型部署]在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现.zip
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现+使用说明.zip
- 基于STM32单片机空气监测系统设计源码+详细文档+配套全部资料(毕业设计).zip
- rdf0412-kcu116-pcie-c-2019-1.zip(XILINX KCU116 源码)
- 基于C#语言的winform界面火车票订票系统(源码+实验报告)
- 【华为OD部分真题及讲解】华为OD部分真题及讲解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功