Python在线考试系统,采用django框架开发,可微信登录,内含使用说明 。
-
系统环境
Linux发行版(Ubuntu16.04 / CentOS等)
MySQL 5.5以上版本
Python3.5以上版本
Redis任意新版本即可
Django版本2.1 -
配置文件
在项目根目录下的config文件夹中,新建一个local_settings.py文件
添加如下配置,注意python文件的严格缩进,不能多或少空格:
MySQL配置
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘xx’,
‘USER’: ‘xxx’,
‘PASSWORD’: ‘xxx’
}
}
Redis配置
REDIS = {
‘default’: {
‘HOST’: ‘127.0.0.1’,
‘PORT’: 6379,
‘USER’: ‘’,
‘PASSWORD’: ‘’,
‘db’: 0,
}
}
BANK_REPO = ’ F:/PythonProject/exam/backup ’ # 修改为存放excel题库的位置,用来保留题库
BASE_NUM_ID = 100000
INIT_PASSWORD = ‘p@ssw0rd’
DOMAIN = “http://xxx.xx.xx.xxx” #### 需要修改此处域名
WEB_INDEX_URI = “{}/web/index”.format(DOMAIN) # 首页
发送邮件
EMAIL_BACKEND = ‘django.core.mail.backends.smtp.EmailBackend’ # 邮箱验证后台
EMAIL_USE_TLS = True # 使用TSL
EMAIL_USE_SSL = False # 使用SSL
EMAIL_SSL_CERTFILE = None # SSL证书
EMAIL_SSL_KEYFILE = None # SSL文件
EMAIL_TIMEOUT = None # 延时
EMAIL_HOST = ‘xxx.xxx@xx.xxx’ SMTP地址
EMAIL_PORT = 465 # 端口
EMAIL_HOST_USER = ‘xxx@xxx.xx’ # 发件邮箱
EMAIL_HOST_PASSWORD = ‘password’ # 密码
SERVER_EMAIL = EMAIL_HOST_USER # 服务器邮箱
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 默认发件人
ADMINS = [(‘Admin’, ‘xxx@xxx.xx’)] # 管理员邮箱
MANAGERS = ADMINS
3.安装环境
创建虚拟环境:
virtualenv venv
等待虚拟环境创建完成执行:
venv/bin/activate
然后安装项目所需安装包
pip install -r requirements.txt
安装过程如果发现错误,解决错误,直到所有文件安装完成。
4.创建数据库
执行命令连接数据库
mysql -uroot -p密码
创建数据库:
Create database 数据库名 default character set utf8;
然后执行:
python manage.py migrate # 迁移数据库,创建数据表
继续创建超级用户:
python manage.py createsuperuser
创建完成整个系统部署完成了。
运行截图:
主要程序
def registry_biz(request):
email = request.POST.get('email', '') # 获取填写的邮箱
name = request.POST.get('name', '') # 获取填写的机构名
username = request.POST.get('username', '') # 获取填写的机构联系人
phone = request.POST.get('phone', '') # 获取填写的手机号
ctype = request.POST.get('type', BusinessAccountInfo.INTERNET) # 获取机构类型
flag = int(request.POST.get('flag', 2)) # 获取一个标记位,代表用户是创建新用户还是使用绑定老用户的方式
uname = email.split('@')[0] # 和之前的注册逻辑没什么区别,创建一个账户名
if not User.objects.filter(username__exact=name).exists():
final_name = username
elif not User.objects.filter(username__exact=uname).exists():
final_name = uname
else:
final_name = email
if flag == 2: # 如果标记位是2,那么将为他创建新用户
user = User.objects.create_user(
username=final_name,
email=email,
password=settings.INIT_PASSWORD,
is_active=False,
is_staff=False
)
if flag == 1: # 如果标记位是1,那么为他绑定老用户
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
return json_response(*UserError.UserNotFound)
pvalues = {
'phone': phone,
'name': final_name,
'user_src': Profile.COMPANY_USER,
}
profile, _ = Profile.objects.select_for_update().get_or_create(email=email) # 获取或创建用户信息
for k, v in pvalues.items():
setattr(profile, k, v)
profile.save()
bizvalues = {
'company_name': name,
'company_username': username,
'company_phone': phone,
'company_type': ctype,
}
biz, _ = BusinessAccountInfo.objects.select_for_update().get_or_create( # 获取或创建机构账户信息
email=email,
defaults=bizvalues
)
return json_response(200, 'OK', {
# 响应JSON格式数据,这个标记位在发送验证邮件的时候还有用
'name': final_name,
'email': email,
'flag': flag
})
完整程序代码下载地址:
Python在线考试系统源代码
更多Python源代码下载,请微信关注:Python代码大全
今天的文章Python在线考试系统源代码分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31637.html