欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

基于 Python+Django+MySQL 的在线投票系统(附完整源代码)

最编程 2024-03-04 20:09:45
...

1、项目说明

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

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

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

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

  • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple hashlib
  • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql

 

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/
 
注:其他问题请参看视频讲解,都有介绍,一定要认真看完哦!
代码编写、视频录制不易,感谢您的支持,祝您学习愉快!
 

避免走丢,记得关注哦????????????