Django项目之打分系统

打分系统

项目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. 用户点击“打分”按钮,前端检验用户输入的分数是否符合0100的范围;
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'
    }

这里写图片描述

扫描二维码关注公众号,回复: 1372420 查看本文章
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/: 就能访问到这个打分系统。

猜你喜欢

转载自blog.csdn.net/lm_is_dc/article/details/80529918
今日推荐