首页 > 数据库 >【项目实战】基于Python+Django+MySQL的在线投票系统(附完整源码)

【项目实战】基于Python+Django+MySQL的在线投票系统(附完整源码)

时间:2023-03-16 20:22:36浏览次数:50  
标签:投票系统 name Python request 源码 user msg login pswd

1、项目说明

基于Python+Django+Mysql在线投票系统项目实战

项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)

  • 首先需要创建数据库数据库名字叫做 db_online_voting
  • 运行sql导入数据或者也可以直接用命令生成(视频有讲解)
  • 需要安装一下下面的模块(如果运行提示有模块未安装,安装一下即可,命令同下,改一下模块名即可)

项目需要安装 django、pymysql、re、hashlib等所需模块(django-simpleui)
安装命令如下:

 

2、项目主要技术

  • python编程技术

  • django框架技术

  • MySQL数据库技术

  • 前端技术

 

3、项目结构

  • OnlineVotingSystem 主程序(项目的配置文件、主路由)

  • login 用户登录注册以及后台管理模块、模型创建模块

  • templates 登录模块前端页面(静态文件存放)

  • user 用户操作模块 (投票,查看投票、发布投票)

  • media 用户上传文件存放文件夹

  • static 静态文件存放文件夹(css、js文件)

  • manage.py 程序的入口

 

4、项目主要功能

  • 用户登录注册

  • 用户发布投票

  • 用户投票

  • 投票、用户管理

 

5、部分源码

login.views.py

import hashlib
from django.http import HttpResponseRedirect
from django.shortcuts import render
from login.models import *


# 01用户登录
def login(request):
    if request.method == "GET":
        return render(request, 'login/login.html')
    elif request.method == "POST":
        name = request.POST['name']
        password = request.POST['pswd']
        # 哈希算法
        m = hashlib.md5()
        m.update(password.encode())
        pswd_m = m.hexdigest()
        try:
            user = User.objects.filter(name=name, password=pswd_m)
        except Exception as e:
            print("login:", e)
        if user:
            user = User.objects.get(name=name)
            request.session['name'] = user.name
            return HttpResponseRedirect('/user/')
        else:
            msg = "账号或密码错误!!!"
            return render(request, 'login/login.html', {"msg": msg})


# 02用户注册
def register(request):
    global user
    if request.method == "GET":
        return render(request, 'login/register.html')
    if request.method == "POST":
        name = request.POST['name']
        pswd_1 = request.POST['pswd_1']
        pswd_2 = request.POST['pswd_2']
        if pswd_1 != pswd_2:
            msg = "密码不一致!"
            return render(request, "login/register.html", {"msg": msg})
        try:
            user = User.objects.filter(name=name, is_active=True)
        except Exception as e:
            print("register异常:", e)
        if user:
            msg = "用户名已存在!"
            return render(request, 'login/register.html', {"msg": msg})
        # 哈希算法
        m = hashlib.md5()
        m.update(pswd_2.encode())
        pswd_m = m.hexdigest()
        try:
            user = User.objects.create(name=name, password=pswd_m)
        except Exception as e:
            print("register_create_user:", e)
        if user:
            msg = "注册成功!"
            return render(request, 'login/login.html', {"msg": msg})
        msg = "注册失败!!"
        return render(request, 'login/register.html', {"msg": msg})


# 03用户退出
def logout(request):
    if 'name' in request.session:
        del request.session['name']
    return HttpResponseRedirect('/')


# 04用户修改密码
def password_edit(request):
    name = request.session.get('name')
    try:
        user = User.objects.filter(name=name)
    except Exception as e:
        print(e)
    if request.method == 'GET':
        return render(request, 'login/password_edit.html')
    if request.method == 'POST':
        pswd1 = request.POST['pswd1']
        pswd2 = request.POST['pswd2']
        # 哈希算法
        m = hashlib.md5()
        m.update(pswd1.encode())
        pswd1 = m.hexdigest()
        if pswd1 == user.get().pswd:
            # 哈希算法
            m = hashlib.md5()
            m.update(pswd2.encode())
            pswd2 = m.hexdigest()
            user.update(password=pswd2)
            return HttpResponseRedirect('/logout/')
        else:
            msg = "密码错误"
            return render(request, 'login/password_edit.html', {"msg": msg})

 

6、运行截图

 

 

 

 

 

7、项目总结

本项目是一个非常适合学习练手的项目,对我们的Django框架技术以及开发经验的提升,完善简历提高技能都有有很大的帮助,推荐大家学习研究这个项目,搞懂其中的业务逻辑流程以及各个知识点非常关键。
 
项目资料截图:

资料获取地址:https://h5.m.taobao.com/awp/core/detail.htm?ft=t&id=696605786168
B站视频讲解地址:https://www.bilibili.com/video/BV1oe4y1V7Ft/
 
注:其他问题请参看视频讲解,都有介绍,一定要认真看完哦!
代码编写、视频录制不易,感谢您的支持,祝您学习愉快!
 

避免走丢,记得关注哦

标签:投票系统,name,Python,request,源码,user,msg,login,pswd
From: https://www.cnblogs.com/bhml/p/17224017.html

相关文章

  • 【项目实战】基于Pthon+PyQt5的GUI点名程序(附完整源码)
    1、项目说明基于python+PyQt5的GUI点名程序项目实战项目需要安装pycharm社区版或专业版都可,以及项目所需的所有模块项目需要安装pyqt5、pywin32及其他一些模块安装命......
  • 【项目实战】基于Python+Django+MySQL的个人博客系统(附完整源码)
    1、项目说明基于python+Django+Mysql的个人博客系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)首先需要创建数据库......
  • python爬虫基础教程
    爬虫介绍爬虫就是程序,是从互联网中,各个网站上爬取数据(能浏览到的网页才可以爬),做数据清洗,入库爬虫本质:模拟http请求,获取数据,入库网站/app>抓包我们日......
  • python中的hashlib模块
    md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等。官网:https://docs.......
  • 使用几何光学实现空间相对定位(python+opencv)
    我从2019年3月份开始学习python,在有一定的基础后,我看到学校有一个物理实验竞赛:北京联合大学第十二届物理实验竞赛,其中有一个题目是空间定位,即利用物理原理,自行搭建实验......
  • 调用AI聊天机器人自动回复信息(Python)
    “人类正从IT时代走向DT时代”,随着移动互联网技术持续高速发展,海量数据计算存储、智能数据挖掘、低时延数据传送和可靠网络安全已经成为软硬件技术飞速发展的催化剂,也推......
  • 抓取王者荣耀英雄列表的爬虫笔记(python+requests)
    在开始这个内容之前,我们先来一张效果图:实现它,需要几个过程:调用王者荣耀助手的数据接口获取所有英雄的图片通过迭代,把所有图片转换成二进制数据流把这些数据导入MySQL数据库......
  • Python startswith()和endswith()方法
    startswith()方法startswith()方法用于检索字符串是否以指定字符串开头,如果是返回True;反之返回False。endswith()方法endswith()方法用于检索字符串是否以指定字符......
  • python - 面向对象编程
    一、对象与过程的概念python中的两大范式:1.面向过程2.面向对象他们两个都不是新的技术,而是一种做事的思维方式1.面向过程:根据业务逻辑从上到下写垒代码面向过程核心是......
  • Python根据图片拍摄日期等整理重命名
    关键词:exif、exifread等等。最近在整理多年拍摄的图片,希望按照拍摄时间进行排序整理制作相册。但是有的图片有水印显示拍摄日期;有的文件创建日期因为搬运创建日期和修改......