建表

from django.db import models
import jwt
# Create your models here. # 角色表
class RoleTable(models.Model):
role = models.CharField(max_length=30, verbose_name='角色')
creator = models.CharField(max_length=30, verbose_name='创建者')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
# 创建者
# 创建时间 def __str__(self):
return self.role class Meta:
db_table = 'role' # 用户表
class UserTable(models.Model):
name = models.CharField(max_length=30, verbose_name='员工姓名')
sex = models.CharField(max_length=10, choices=(('', '女'), ('', '男')), verbose_name='员工性别')
username = models.CharField(max_length=32, verbose_name='用户名')
password = models.CharField(max_length=32, verbose_name='密码')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
login_time = models.DateTimeField(verbose_name='最近登录时间', auto_now=True)
role = models.OneToOneField(RoleTable, on_delete=models.CASCADE) def __str__(self):
return self.name class Meta:
db_table = 'user'

models.py

配置url

from django.urls import path
from AccountManager import views
app_name = 'account'
urlpatterns = [
path('login/', views.Login, name='login'),
path('add/', views.addUser, name='add'),
]

配置salt

# 加密字段
SALT = 'haxitaig!@#$%^&*' #根据公司自定制salt

创建日志

首先自己配置settings.py

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters':{
"generic": {
"format": "%(asctime)s [%(process)d] [%(levelname)s] %(message)s",
"datefmt": "[%Y-%m-%d %H:%M:%S %z]",
"class": "logging.Formatter"
},
"access": {
"format": "%(message)s",
"class": "logging.Formatter"
}
},
'loggers': {
"AuthCert.error": {
"level": "INFO",
"handlers": ["error_file"],
"propagate": 1,
"qualname": "AuthCert.error"
},
"AuthCert.access": {
"level": "INFO",
"handlers": ["access_file"],
"propagate": 0,
"qualname": "AuthCert.access"
}
},
'handlers': {
"console": {
"class": "logging.StreamHandler",
"formatter": "generic",
"stream": "sys.stdout"
},
"error_file": {
"class": "logging.FileHandler",
"formatter": "generic",
"filename": "./log/error.log"
},
"access_file": {
"class": "logging.handlers.RotatingFileHandler",
"maxBytes": 1024 * 1024,
"backupCount": 5,
"formatter": "generic",
"filename": "./log/acess.log",
}
},
}

settings.py

接着,在views.py中生成logging

import logging

logger = logging.getLogger('AuthCert.error')  

#然后使用logger.ingo('')、 logger.error('')

添加数据

def addUser(request):
"""
增加用户
""" if request.method == "POST": #添加数据
role = request.POST.get('role')
# creator = request.POST.get('creator')
name = request.POST.get('name')
sex = request.POST.get('sex')
username = request.POST.get('username')
password = request.POST.get('password')
# if not all([role, creator, name, sex, username, password]):
if not all([role, name, sex, username, password]): #如果参数没有填写完毕,返回‘参数不全’
logger.error('canshubuquan')
return HttpResponse('参数不全')
# 对密码进行MD5加密
else:
try:
pwd_salt = password + SALT #对前端填写的password进行加盐
password = hashlib.md5(pwd_salt.encode())
password = password.hexdigest()
print('password= ', password)
# 保存角色数据导数据库
Role = RoleTable()
Role.role = role
# Role.creator = creator
Role.save()
# 保存用户数据到数据库
User = UserTable()
User.role = Role
User.name = name
User.sex = sex
User.username = username
User.password = password
User.save() logger.info('增加用户成功')
return HttpResponse('add user success')
except Exception as e:
logger.error(e)
return HttpResponse(e)
else:
return render(request, 'add.html')

views.py

用户登录

def Login(request):
"""
用户登录
"""
if request.method == "POST":
username = request.POST.get('username')
pwd = request.POST.get('password')
pwd_salt = pwd + SALT #使用salt加密pwd
password = hashlib.md5(pwd_salt.encode())
password = password.hexdigest()
user = UserTable.objects.filter(username=username, password=password) #使用前端获取的username,和加密后的pwd,与数据库里的username,pwd进行对比 if len(user):
logger.info('success') #打印日志
return HttpResponse('登录成功')
else:
logger.error('username 、 password Error')
return HttpResponse('用户名密码不正确')
else:
return render(request, 'login.html')

views.py

最新文章

  1. CSS基础篇之选择符
  2. 小白如何进入IOS,答案就在这里
  3. Jquery获取checkbox属性checked为undefined
  4. Solr5.3.1通过copyField设置多个field(字段)同时检索
  5. Oracle结果集 (MSSQL存储过程写报表)
  6. HttpRequest
  7. Inna and Binary Logic
  8. 前端MVC学习笔记(二)——AngularJS验证、过滤器、指令
  9. CentOS6.5 常用命令
  10. 腾讯云上PhantomJS用法示例
  11. Problem 1: Multiples of 3 and 5
  12. .net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结(二)
  13. PB的一些记录
  14. java 知识体系
  15. Spring Boot 中使用 Jedis 及 Lettuce的对比
  16. Win10无法使用内置管理员用户打开edge解决方案
  17. git push 问题汇总
  18. oracle11g在没DNS情况下failover的配置方法
  19. 原生 JS 的 Base64 转码
  20. DDR3调试记录

热门文章

  1. 开启ucosii的移植之旅
  2. /Date(1555554794000)/ 转换为日期格式
  3. [CF 666E] Forensic Examination
  4. 如何解决Redis中的key过期问题
  5. 用CNN对CIFAR10进行分类(pytorch)
  6. 您必须知道的 Git 分支开发规范
  7. Java基础--面向对象编程1(类与对象)
  8. 【Sublime Text】sublime text 安装插件方法总结
  9. docker时间与系统时间同步的问题
  10. knockoutjs复杂对象的可观察性