项目运行
需要先安装Python的相关依赖:pymysql,Django==3.2.8 ,opencv-python,numpy,pillow使用pip install 安装
第一步:创建数据库
第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句
第三步:修改源代码中的settings.py文件,改成自己的mysql数据库用户名和密码
第四步:运行命令:python manage.py runserver 8000
第五步:打开浏览器查看http://127.0.0.1:8000
毕设帮助,指导,本源码分享,调试部署(见文末)
系统介绍:
该系统主要就是基于C/S架构模式开发的系统,利用python技术和MySQL 数据库进行系统的设计和开发。
下图即为设计的功能结构,
))
def login(req):
"""
跳转登录
:param req:
:return:
"""
return render(req, 'login.html')
def register(req):
"""
跳转注册
:param req:
:return:
"""
return render(req, 'register.html')
def index(req):
"""
跳转首页
:param req:
:return:
"""
username = req.session['username']
total_user = len(User.objects.all())
total_pic = Pic.objects.count()
date = datetime.datetime.today()
month = date.month
year = date.year
return render(req, 'index.html', locals())
def login_out(req):
"""
注销登录
:param req:
:return:
"""
del req.session['username']
return HttpResponseRedirect('/')
def personal(req):
username = req.session['username']
role_id = req.session['role']
user = User.objects.filter(name=username).first()
return render(req, 'personal.html', locals())
def upload_pic(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES) # 有文件上传要传如两个字段
if form.is_valid():
m = User.objects.get(pk=request.session['user_id'])
m.image = form.cleaned_data['image'] # 直接在这里使用 字段名获取即可
m.save()
return HttpResponse('image upload success')
return HttpResponseForbidden('allowed only via POST')
def get_data(request):
"""
获取列表信息 | 模糊查询
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position','')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Pic.objects.all()
else:
results_obj = Pic.objects.filter(name__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.name,
"result": user.result,
"status": user.status,
"owner": user.owner,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
}
data.append(record)
response_data['count'] =len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def data(request):
"""
跳转页面
"""
username = request.session['username']
role = int(request.session['role'])
user_id= request.session['user_id']
return render(request, 'data.html', locals())
def edit_data(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
username = request.POST.get('username')
phone = request.POST.get('phone')
User.objects.filter(id=user_id).update(
name=username,
phone=phone)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_data(request):
"""
删除信息
"""
user_id = request.POST.get('id')
result = Pic.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '删除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '删除失败!'}
return JsonResponse(response_data, status=403)
def tpsb(request):
"""
跳转页面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
results = Pic.objects.all()
image_list = []
for i in results:
record= {
'id':i.id,
'name':i.name
}
image_list.append(record)
return render(request, 'tpsb.html', locals())
def tpgl(request):
"""
跳转页面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
results = Pic.objects.all()
return render(request, 'tpgl.html', locals())
def analysis(request):
results = Pic.objects.values('result').annotate(myCount=Count('result')) # 返回查询集合
country = []
count = []
for i in results:
country.append(i['result'])
count.append(i['myCount'])
result1 = Pic.objects.values('owner').annotate(myCount=Count('owner')) # 返回查询集合
values = []
for i in result1:
values.append({'name':i['owner'],'value':i['myCount']})
username = request.session.get('username', 'admin')
role = int(request.session.get('role', 3))
user_id = request.session.get('user_id', 1)
return render(request, 'analysis.html', locals())
def save_file(file):
if file is not None:
file_name = os.path.join(workdir, 'static', 'uploadImg', file.name)
with open(file_name, 'wb')as f:
# chunks()每次读取数据默认 我64k
for chunk in file.chunks():
f.write(chunk)
f.close()
return file_name
else:
return None
def predict(request):
image = request.FILES.get('image')
file_name = save_file(image)
file_path = os.path.join(workdir, 'static', 'uploadImg', image.name)
# try:
result = main(file_path)
print(result)
status= '无烟'
if result:
for i in result:
for key,value in i.items():
print(value)
if value=="smoke":
status='有烟'
else:
status='无烟'
Pic.objects.create(name=image.name,
status="成功",
result=status,
owner=request.session.get('username', 'admin'),
)
return JsonResponse({"result": status})
# except Exception as e:
# print(e)
# return JsonResponse({"error":403})
def get_result(request,pic_id):
result = Pic.objects.filter(id=pic_id).first()
license_plate = result.result
province = result.province
return JsonResponse({'province': province,'license_plate':license_plate})
总结 :
本文所设计和开发的是一个烟雾系统,本系统是一个软件,选择的c/s结构进行开发的,本系统开发所采用的python等技术,这些技术是本人在大学期间非常熟悉和进行了深度钻研的技术,可以保证网站的正常开发,不会在中途因为技术问题出现错误。而且这两种技术应用非常的广泛,如果在开发网站的过程中遇到了啥问题,在网上也可以很快的找到答案。另外本系统在数据方面用的mysql数据库,mysql数据库是一个功能非常强大的数据库,语句非常的简单,数据存储和处理的能力非常的强。特别适合本网站。
源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻