当前位置:网站首页>02-项目实战之后台员工信息管理
02-项目实战之后台员工信息管理
2022-07-06 09:13:00 【As。】
- 创建员工信息数据表;user (已创建过了)
- 定义模型Model类;进入myobject/myadmin/models.py;由于user表中id是自增的,所以不需要再定义
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" # 更改表名
- 将myobject/myadmin/index.py 复制一份到当前路径,名称改为user.py(每个页面的视图单独管理),添加6个函数(增删改查操作)
#员工信息管理的视图文件
from django.shortcuts import render
from django.http import HttpResponse
from myadmin.models import User
# Create your views here.
def index(request): #浏览信息
pass
def add(request): #加载信息添加表单
pass
def insert(request): #执行信息添加
pass
def delete(request, uid=0): #执行信息删除
pass
def edit(request, uid=0): #加载信息编辑表单
pass
def update(request, uid): #执行信息编辑
pass
- 配置url路由`
#后台管理子路由文件
from django.urls import path
from myadmin.views import index, 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/<int:uid>', user.delete, name="myadmin_user_delete"), #执行删除
path('user/edit/<int:uid>', user.edit, name="myadmin_user_edit"), #加载编辑表单
path('user/update/<int:uid>', user.update, name="myadmin_user_update"), #执行编辑
]
- 在模板中,完善浏览操作;在\myobject\templates\myadmin里新建一个user文件夹,在user文件夹中创建一个index.html文件;myobject/myadmin/user.py修改如下:
def index(request): #浏览信息
umod = User.objects
ulist = umod.all()
context = {
"userlist": ulist}
return render(request, "myadmin/user/index.html", context)
- 在\myobject\templates\myadmin\user\index.html中进行继承操作
{
% extends 'myadmin/base.html' %}
{
% block main_body %}
{
% endblock %}
- 在父模板(base.html)进行反解析操作

13.员工信息浏览
14.修改员工中的状态信息,判断status状态

15.分页,在user.py中操作
#员工信息管理的视图文件
from django.shortcuts import render
from django.http import HttpResponse
from myadmin.models import User
from django.core.paginator import Paginator #分页导包
def index(request,pIndex=1): #浏览信息
umod = User.objects #实例化对象
#ulist = umod.all() #查询所有数据
ulist = umod.filter(status__lt=9) #过滤信息,过滤status状态 小于9的 展示在页面
#执行分页处理
pIndex = int(pIndex)
page = Paginator(ulist, 5) #以每页5条数据分页
maxpages = page.num_pages #获取最大页数
#判断当前页是否越界
if pIndex > maxpages:
pIndex = maxpages
if pIndex < 1:
pIndex = 1
list2 = page.page(pIndex) #获取当前页数据
plist = page.page_range #获取页面列表信息
context = {
"userlist": list2, 'plist':plist, 'pIndex':pIndex, 'maxpages': maxpages}
return render(request, "myadmin/user/index.html", context) #模板渲染
def add(request): #加载信息添加表单
pass
def insert(request): #执行信息添加
pass
def delete(request, uid=0): #执行信息删除
pass
def edit(request, uid=0): #加载信息编辑表单
pass
def update(request, uid): #执行信息编辑
pass
15.在index.html中获取页面信息



16.搜索框 (模糊搜索名称和昵称,以及状态)
#员工信息管理的视图文件
from django.shortcuts import render
from django.http import HttpResponse
from myadmin.models import User
from django.core.paginator import Paginator #分页导包
from django.db.models import Q #搜索条件为或的
def index(request,pIndex=1): #浏览信息
umod = User.objects #实例化对象
#ulist = umod.all() #查询所有数据
ulist = umod.filter(status__lt=9) #过滤信息,过滤status状态 小于9的 展示在页面
mywhere=[]
#获取并判断搜索条件
kw = request.GET.get("keyword", None)
if kw:
ulist = ulist.filter(Q(username__contains=kw) | Q(nickname__contains=kw))
mywhere.append('keyword='+kw)
# 获取、判断并封装状态status搜索条件
status = request.GET.get('status', '')
if status != '':
ulist = ulist.filter(status=status)
mywhere.append("status=" + status)
#执行分页处理
pIndex = int(pIndex)
page = Paginator(ulist, 5) #以每页5条数据分页
maxpages = page.num_pages #获取最大页数
#判断当前页是否越界
if pIndex > maxpages:
pIndex = maxpages
if pIndex < 1:
pIndex = 1
list2 = page.page(pIndex) #获取当前页数据
plist = page.page_range #获取页面列表信息
context = {
"userlist": list2, 'plist':plist, 'pIndex':pIndex, 'maxpages': maxpages, "mywhere": mywhere}
return render(request, "myadmin/user/index.html", context) #模板渲染
def add(request): #加载信息添加表单
pass
def insert(request): #执行信息添加
pass
def delete(request, uid=0): #执行信息删除
pass
def edit(request, uid=0): #加载信息编辑表单
pass
def update(request, uid): #执行信息编辑
pass

边栏推荐
- MySQL主從複制、讀寫分離
- MySQL27-索引优化与查询优化
- MySQL27-索引優化與查詢優化
- 解决扫描不到xml、yml、properties文件配置
- Case identification based on pytoch pulmonary infection (using RESNET network structure)
- MySQL18-MySQL8其它新特性
- CSDN问答模块标题推荐任务(一) —— 基本框架的搭建
- CSDN-NLP:基于技能树和弱监督学习的博文难度等级分类 (一)
- CSDN问答标签技能树(二) —— 效果优化
- The virtual machine Ping is connected to the host, and the host Ping is not connected to the virtual machine
猜你喜欢

CSDN问答标签技能树(五) —— 云原生技能树

Breadth first search rotten orange

MySQL master-slave replication, read-write separation

【博主推荐】C# Winform定时发送邮箱(附源码)

【博主推荐】SSM框架的后台管理系统(附源码)

How to find the number of daffodils with simple and rough methods in C language

【博主推荐】asp.net WebService 后台数据API JSON(附源码)

Opencv uses freetype to display Chinese

csdn-Markdown编辑器

MySQL18-MySQL8其它新特性
随机推荐
MySQL主從複制、讀寫分離
MySQL21-用戶與權限管理
Global and Chinese markets of static transfer switches (STS) 2022-2028: Research Report on technology, participants, trends, market size and share
Kubesphere - deploy the actual combat with the deployment file (3)
Global and Chinese markets for aprotic solvents 2022-2028: Research Report on technology, participants, trends, market size and share
Why is MySQL still slow to query when indexing is used?
MySQL26-性能分析工具的使用
Timestamp with implicit default value is deprecated error in MySQL 5.6
【博主推荐】C#MVC列表实现增删改查导入导出曲线功能(附源码)
CSDN Q & a tag skill tree (V) -- cloud native skill tree
MySQL30-事务基础知识
MySQL 20 MySQL data directory
【博主推荐】C# Winform定时发送邮箱(附源码)
MySQL master-slave replication, read-write separation
API learning of OpenGL (2003) gl_ TEXTURE_ WRAP_ S GL_ TEXTURE_ WRAP_ T
API learning of OpenGL (2001) gltexgen
C language string function summary
MySQL 29 other database tuning strategies
Global and Chinese market of wafer processing robots 2022-2028: Research Report on technology, participants, trends, market size and share
MySQL23-存储引擎