栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

06点餐项目实战之员工信息管理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

06点餐项目实战之员工信息管理

  • 本页面完成项目后台管理的员工模块操作(增删改查)

(1). 员工信息数据表:user

(2). 定义模型Model类

(3). 项目urls路由信息配置

(4).编辑视图文件

(5). 编写模板文件

=======================================================================

  • 1.在数据库 osdb 中创建user表,若此表已存在请跳过
-- 员工信息表
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '员工账号id',
  `username` varchar(50) DEFAULT NULL COMMENT '员工账号',
  `nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
  `password_hash` varchar(100) DEFAULT NULL COMMENT '密码',
  `password_salt` varchar(50) DEFAULT NULL COMMENT '密码干扰值',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1正常/2禁用/9删除',
  `create_at` datetime DEFAULT NULL COMMENT '创建时间',
  `update_at` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
(2). 定义模型Model类,按照表结构定义
  • 进入myadmin应用目录中编辑:myobject/myadmin/models.py 模型文件
from django.db import models
from datetime import datetime

#员工账号信息模型
class User(models.Model):
    username = models.CharField(max_length=50)    #员工账号
    nickname = models.CharField(max_length=50)    #昵称
    password_hash = models.CharField(max_length=100)#密码
    password_salt = models.CharField(max_length=50)    #密码干扰值
    status = models.IntegerField(default=1)    #状态:1正常/2禁用/9删除
    create_at = models.DateTimeField(default=datetime.now)    #创建时间
    update_at = models.DateTimeField(default=datetime.now)    #修改时间

    def toDict(self):
        return {'id':self.id,'username':self.username,'nickname':self.nickname,'password_hash':self.password_hash,'password_salt':self.password_salt,'status':self.status,'create_at':self.create_at.strftime('%Y-%m-%d %H:%M:%S'),'update_at':self.update_at.strftime('%Y-%m-%d %H:%M:%S')}

    class Meta:
        db_table = "user"  # 更改表名
(3). 先编辑视图文件,在去写url路由文件
  • 创建:myobject/myadmin/views/user.py 视图文件,并进行编辑(主要就是增删改查,然后还有两个加载页面)
from django.shortcuts import render
from django.http import HttpResponse
from django.http import JsonResponse
from django.db.models import Q
from django.core.paginator import Paginator
from datetime import datetime
import random

from myadmin.models import User

def index(request,pIndex=1):
    '''浏览信息'''
    umod = User.objects
    mywhere=[]
    list = umod.filter(status__lt=9)

    # 获取、判断并封装关keyword键搜索
    kw = request.GET.get("keyword",None)
    if kw:
        # 查询员工账号或昵称中只要含有关键字的都可以
        list = list.filter(Q(username__contains=kw) | Q(nickname__contains=kw))
        mywhere.append("keyword="+kw)

    # 获取、判断并封装状态status搜索条件
    status = request.GET.get('status','')
    if status != '':
        list = list.filter(status=status)
        mywhere.append("status="+status)

    #执行分页处理
    pIndex = int(pIndex)
    page = Paginator(list,5) #以5条每页创建分页对象
    maxpages = page.num_pages #最大页数
    #判断页数是否越界
    if pIndex > maxpages:
        pIndex = maxpages
    if pIndex < 1:
        pIndex = 1
    list2 = page.page(pIndex) #当前页数据
    plist = page.page_range   #页码数列表

    #list2 = User.objects.all() #获取所有信息
    #封装信息加载模板输出
    context = {"userlist":list2,'plist':plist,'pIndex':pIndex,'maxpages':maxpages,'mywhere':mywhere}
    return render(request,"myadmin/user/index.html",context)

def add(request):
    '''加载添加页面'''
    return render(request,"myadmin/user/add.html")

def insert(request):
    '''执行添加'''
    try:
        ob = User()
        ob.username = request.POST['username']
        ob.nickname = request.POST['nickname']
        #获取密码并md5
        import hashlib
        md5 = hashlib.md5()
        n = random.randint(100000, 999999)
        s = request.POST['password']+str(n) 
        md5.update(s.encode('utf-8'))
        ob.password_hash = md5.hexdigest()
        ob.password_salt = n
        ob.status = 1
        ob.create_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"添加成功!"}
    except Exception as err:
        print(err)
        context={"info":"添加失败"}
    return render(request,"myadmin/info.html",context)

def delete(request,uid):
    '''删除信息'''
    try:
        ob = User.objects.get(id=uid)
        ob.status = 9
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"删除成功!"}
    except Exception as err:
        print(err)
        context={"info":"删除失败"}

    return JsonResponse(context)
    #return render(request,"myadmin/info.html",context)


def edit(request,uid):
    '''加载编辑信息页面'''
    try:
        ob = User.objects.get(id=uid)
        context={"user":ob}
        return render(request,"myadmin/user/edit.html",context)
    except Exception as err:
        context={"info":"没有找到要修改的信息!"}
        return render(request,"myadmin/info.html",context)

def update(request,uid):
    '''执行编辑信息'''
    try:
        ob = User.objects.get(id=uid)
        ob.nickname = request.POST['nickname']
        ob.status = request.POST['status']
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"修改成功!"}
    except Exception as err:
        print(err)
        context={"info":"修改失败"}
    return render(request,"myadmin/info.html",context)

"""
def resetpass(request,uid):
    '''加载重置会员密码信息页面'''
    try:
        ob = User.objects.get(id=uid)
        context={"user":ob}
        return render(request,"myadmin/user/resetpass.html",context)
    except Exception as err:
        context={"info":"没有找到要修改的信息!"}
        return render(request,"myadmin/info.html",context)

def doresetpass(request,uid):
    '''执行编辑信息'''
    try:
        ob = User.objects.get(id=uid)
        #获取密码并md5
        import hashlib
        md5 = hashlib.md5()
        n = random.randint(100000, 999999)
        s = request.POST['password']+str(n) 
        md5.update(s.encode('utf-8'))
        ob.password_hash = md5.hexdigest()
        ob.password_salt = n
        ob.save()
        context={"info":"密码重置成功!"}
    except Exception as err:
        print(err)
        context={"info":"密码重置失败"}
    return render(request,"myadmin/info.html",context)
"""
(4). 项目urls路由信息配置
  • 打开根路由文件:myobject/myadmin/urls.py路由文件,编辑路由配置信息
    from django.urls import path
    from myadmin.views import index
    from myadmin.views import user
    
    urlpatterns = [
        # 后台首页
        path('', index.index, name="myadmin_index"),
    
        #员工账号信息管理
        path('user/', user.index, name="myadmin_user_index"),#浏览信息
        path('user/add', user.add, name="myadmin_user_add"),             #加载添加表单
        path('user/insert', user.insert, name="myadmin_user_insert"),     #执行信息添加
        path('user/del/', user.delete, name="myadmin_user_del"),#删除信息
        path('user/edit/', user.edit, name="myadmin_user_edit"),#准备信息编辑
        path('user/update/', user.update, name="myadmin_user_update"),#执行信息编辑
        #重置员工密码
        #path('user/resetpass/', user.resetpass, name="myadmin_user_resetpass"), 
        #path('user/doresetpass/', user.doresetpass, name="myadmin_user_doresetpass"),
    ]
    (5). 编写模板文件
  • 5.1. 后台用户信息浏览模板:/templates/myadmin/user/index.html
  • {% extends "myadmin/base.html" %}
    
    {% block main_body %}
        
        
    账号管理 订餐系统后台管理
    1. 首页
    2. 员工账号信息管理

    员工账号信息表
    {% for vo in userlist %} {% endfor %}
    ID 员工账号 昵称 当前状态 添加时间 修改时间 操作
    {{ vo.id }} {{ vo.username }} {{ vo.nickname }} {% if vo.status == 1 %} 正常 {% elif vo.status == 2 %} 禁停 {% elif vo.status == 6 %} 管理员 {% elif vo.status == 9 %} 已删除 {% else %} 未知状态 {% endif %} {{ vo.create_at|date:'Y-m-d H:i:s' }} {{ vo.update_at|date:'Y-m-d H:i:s' }} 编辑 分配店铺
    添加会员
    • «
    • {% for p in plist %}
    • {{p}}
    • {% endfor %}
    • »

    {% endblock %}
  • 5.3. 后台用户信息添加模板:/templates/myadmin/user/add.html
  • {% extends "myadmin/base.html" %}
    
    {% block main_body %}
        
        
    账号管理 订餐系统后台管理
    1. 首页
    2. 员工账号信息管理
    添加员工账号信息
    {% csrf_token %}  
    {% endblock %}
  • 信息提示页:/templates/myadmin/info.html
  • {% extends "myadmin/base.html" %}
    
    {% block main_body %}                
        
        
    信息提示:
      {{ info }} {% endblock %}
  • 5.4. 后台用户信息编辑模板:/templates/myadmin/users/edit.html
  • {% extends "myadmin/base.html" %}
    
    {% block main_body %}
        
        
    账号管理 订餐系统后台管理
    1. 首页
    2. 员工账号信息管理
    员工信息修改
    {% csrf_token %} {{ user.create_at|date:'Y-m-d H:i:s' }} {{ user.update_at|date:'Y-m-d H:i:s' }}     正常     禁用     管理员  
    {% endblock %}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号