打分系统

关注公众号“轻松学编程”了解更多。

项目GitHub地址:https://github.com/liangdongchang/VoteSys.git

1、开发需求

a. 打分:对上台演讲的同学打分,统计打分人数、总分数、平均分;

b. 留言:用户可以对演讲者进行留言互动。

2、说明文档
1、表结构
1.1 用户表
包含字段:用户名、昵称、密码、电脑IP
1.2 投票类型表
包含字段:投票种类、种类简介
1.3 候选者表
包含字段:名称、年龄,竞选宣言,选票数,候选者图片名称,第几次竞选,按名字拼音首字母排序
外键:与投票类型表形成一对多关系,一个投票类型对应多个候选者
1.4 用户投票记录表
包含字段:用户名称、投票时间,投票给谁,投票类型,备注(如果是打分系统,就是分数),给候选者第几次投票
外键:用户名称、投票给谁、投票类型
1.5 聊天记录表
包含字段:发送者、时间、内容、话题(候选者),投票类型
外键:与用户表是一对多、与候选者表是一对多、与投票类型是一对多的关系 2、初始化表
a. 需要给投票类型表和候选者表添加初始数据并在候选者表中把外键指向投票类型表。
b. 其它表不需做初始化,当用户打分时会自动添加用户的IP进用户表。 3、处理用户请求
a. 用户通过地址:http://10.3.134.163:8000/vote/shareNav/首先进入打分系统首页。
b. views视图中的shareNav()函数处理用户请求并返回渲染后的模板。
c. 用户在首页选中候选者并点击“去打分”按钮,跳转到:http://10.3.134.163:8000/vote/share/35/1,
其中35为候选者id,1为第几次投票,默认为第一次投票
d. view视图中的share()函数处理用户请求并返回渲染后的模板,
e. 用户点击“打分”按钮,前端检验用户输入的分数是否符合0到100的范围;
f. view视图中的grade()函数处理用户请求并返回渲染后的模板。
g. 用户点击“留言”按钮,前端检验用户输入的字数是否小于40字;
h. view视图中的chat()函数处理用户请求并返回渲染后的模板。 4、渲染结果
a. 系统首页需要获取候选者名单并做成下拉框供用户选择
b. 打分界面需要显示总分数、平均分、打分人数、用户打分的时间以及分数、留言 5、模板
shareNav.html:打分系统首页
shareGrade.html:候选者界面 6、其它
在每个界面实时显示当前时
3、新建Django项目

在PyCharm中选择file->New Project->选择Django项目->创建一个新的虚拟环境

导入模块:

创建子应用并注册:

python manage.py startapp MyApp


在settings.py中注册子应用:

4、数据库配置

在settings.py中设置

# 使用MySQL数据库
'default': {
# 数据库引擎
'ENGINE': 'django.db.backends.mysql',
# 数据库名称
'NAME': 'voteSys',
# 账号和密码
'USER': 'root',
'PASSWORD': '123456',
# IP和端口
'HOST': 'localhost',
'PORT': '3306'
}

5、路由配置

项目中VoteSys目录下的urls.py

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^vote/',include('VoteApp.urls',namespace='vote')), ]

子应用VoteApp目录下的urls.py

urlpatterns = [

    # 显示分享主页面
url(r'^shareNav/$', views.shareNav,name='shareNav'),
# 显示分享者页面
url(r'^share/(\d+)/(\d+)$', views.share,name='shareGrade'),
# 打分
url(r'^share/grade/', views.grade),
# 留言
url(r'^chat/', views.chat),
# 测试
url(r"^test/",views.test),
]
6、view视图

7、效果图

为了在同一局域网内的人能够访问这个web网站,可以设置一个批处理文件:
命名为:启动打分服务器.bat

@echo off
cd D:\Learn\python\venv\.voteSysVenv\
python D:\Learn\python\Django\VoteSys\manage.py runserver 0.0.0.0:8000
pause

获取本机IP:

import socket
import uuid # 获取主机名
hostname = socket.gethostname()
#获取IP
ip = socket.gethostbyname(hostname)
# 获取Mac地址
def get_mac_address():
mac=uuid.UUID(int = uuid.getnode()).hex[-12:]
return ":".join([mac[e:e+2] for e in range(0,11,2)]) ipList = socket.gethostbyname_ex(hostname)
print(ipList)
print("主机名:",hostname)
print("IP:",ip)
print("Mac地址:",get_mac_address())

比如别人访问:http://10.3.134.163:8000/vote/shareNav/: 就能访问到这个打分系统。

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

Django项目之打分系统的更多相关文章

  1. Django项目在linux系统中虚拟环境部署

    1.在linux系统下,安装virtualenv 命令:pip install virtualenv 2.项目部署前的准备 1. Django web project deployment 1.1.  ...

  2. Python Django项目日志查询系统

    该项目适合中小型公司日志查询工作.大型公司可以使用elk等.该系统其实就是调用了absible命令去查日志,然后把输出的信息输到页面查看. 日志查询系统 维护手册 作者:陈土锋 日期:2020年6月1 ...

  3. Django 项目搭建(ubuntu系统)

    1 环境搭建 sudo apt-get install python3-pip 安装pip3 sudo pip3 install virtualenv 安装虚拟环境,这里展示virtualenv vi ...

  4. 解决django项目在ubuntu系统上无法安装mysqlclient

    首先我的项目是django2.0,python环境是3.5. 我们在本地开发完django项目了,在本地运行是成功的,然后我们把django项目放到服务器上,运行的时候就出错了. 如图: 我们都知道, ...

  5. Django项目登录注册系统

    Django项目之个人网站 关注公众号"轻松学编程"了解更多. Github地址:https://github.com/liangdongchang/MyWeb.git 感兴趣的可 ...

  6. Django项目打分系统

    Django项目之个人网站 关注公众号"轻松学编程"了解更多. Github地址:https://github.com/liangdongchang/MyWeb.git 感兴趣的可 ...

  7. 在裸机centos7系统中部署django项目的过程

    概要 本文用一台安装了centos7.5系统的裸奔Linux机器(当然是虚拟机)详细讲解从无到有部署django项目的过程. 安装必要的工具 配置yum源 至于什么是yum源大家请自行百度,本人用的是 ...

  8. python-django项目-Linux系统建立django项目_20191117

    python-django项目-Linux系统建立django项目 1,Linux系统下面,cd /usr/local/lib/  看这个下面会有两个python版本,一个2.7,一个3.5,我们使用 ...

  9. centos7 apache httpd安装和配置django项目

    一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装http ...

随机推荐

  1. Centos-查看磁盘分区占用情况-df

    df 检查linux系统中磁盘分区占用情况 相关选项 -h 以人类友好读方式显示 -k 以KB为单位输出磁盘分区使用情况 -m   以MB为单位输出磁盘分区使用情况 -a 列出所有文件系统分区情况,包 ...

  2. Python-如何在一个for循环中迭代多个可迭代对象?

    案例: 某班学生期末考试成绩,语文.数学.英语分别存储在3个列表中,同时迭代三个列表.,计算每个学生的总分(并行) 某年级有4个班,某次英语成绩分别记录在4个列表中,依次迭代每个列表,统计全年级高于9 ...

  3. Web开发初探之JavaScript 快速入门

    本文改编和学习自 A JavaScript Primer For Meteor 和 MDN Web教程 前文 Web开发初探 概述 本文以介绍 JavaScript 为主,初学者掌握本文的内容后,将能 ...

  4. python-格式化(%,format,f-string)输出+输入

    1-格式化输出: % 1.print('我的姓名是%s,身高%s cm'%(name,height)) 2.%s -str() ; %d–十进制3.传入值的时候一定是个元组,不是列表4.当指定长度时: ...

  5. MLHPC 2018 | Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems

    这篇文章主要介绍了一个名为Aluminum通信库,在这个库中主要针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 通信何时发生 一 ...

  6. mongoose 查询数据属性为数组,且包含某个值的方法

    mongoose在创建schema的时候有些属性需要设置为数组类型,比如商品图片.商品标签.不同尺寸.价格等. 那么怎么查询具有某个标签的商品了,下面记录一下两种情况: 查询具有'vue'标签的文章 ...

  7. springboot1.5和jpa利用HikariCP实现多数据源的使用

    背景 现在已有一个完整的项目,需要引入一个新的数据源,其实也就是分一些请求到从库上去 技术栈 springboot1.5 (哎,升不动啊) 思路 两个数据源,其中一个设置为主数据源 两个事物管理器,其 ...

  8. Idea 配置codeTemplate

    注释模版 注释模版是指在编写代码时针对不同的类,方法或者其他文件时自动生成的注释信息.在eclipse我们很熟悉可以利用 /**,Enter在方法,类名等前一行来生成注释模板,但是IntelliJ I ...

  9. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.4)- 串行NOR Flash下载算法(Keil MDK工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Keil MDK工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash ...

  10. centos8上配置openssh的安全

    一,openssh服务版本号的查看 1,查看当前sshd的版本号 : [root@yjweb ~]# sshd --help unknown option -- - OpenSSH_7.8p1, Op ...