#联通用户管理系统(一)
1.新建项目
如果你是windows的话,界面应该是如下的:
2.创建app
python manage.py startapp app01
一般情况下:我们是在pycharm的终端中运行上述指令,但是pychrm中为我们提供了工具,点击工具,找到并点击Run manage.py Task
,便打开了manage.py窗口,相当于pychrm为我们运行了manage.py。我们直接输入startapp app01
便可以出创建app了。
如果你是windows电脑,界面如下:
注册app:将我们创建的app注册到setting.py中
3.设计表结构(django)
from django.db import models
class Department(models.Model):
""" 部门表 """
title = models.CharField(verbose_name='标题', max_length=32)
class UserInfo(models.Model):
""" 员工表 """
name = models.CharField(verbose_name="姓名", max_length=16)
password = models.CharField(verbose_name="密码", max_length=64)
age = models.IntegerField(verbose_name="年龄")
account = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
create_time = models.DateTimeField(verbose_name="入职时间")
# 无约束
# depart_id = models.BigIntegerField(verbose_name="部门ID")
# 1.有约束
# - to,与那张表关联
# - to_field,表中的那一列关联
# 2.django自动
# - 写的depart
# - 生成数据列 depart_id
# 3.部门表被删除
# ### 3.1 级联删除
depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)
# ### 3.2 置空
# depart = models.ForeignKey(to="Department", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)
# 在django中做的约束
gender_choices = (
(1, "男"),
(2, "女"),
)
gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)
4.在MySQL中生成表
-
工具连接MySQL生成数据库。
create database gx_day16 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
修改配置文件,连接MySQL
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'gx_day16', # 数据库名字 'USER': 'root', 'PASSWORD': 'root123', 'HOST': '127.0.0.1', # 那台机器安装了MySQL 'PORT': 3306, } }
-
django命令生成数据库表
python manage.py makemigrations python manage.py migrate
如果你在测试连接数据库的过程中出现错误,可以先检查settings.py文件中MYSQL数据库的配置是否正确。
表结构创建成功:
5.静态文件管理
static目录
6.部门管理
我们先用最原始的方式来做,之后我们再用dgango组件
Django中提供Form和ModelForm组件(方便)
在还没有创建新建部门的功能时,为了数据是否能够显示,可以进行如下操作:
通过Dgano Shell插入数据
在Dgango项目的根目录下,打开终端,使用命令进入Django Shell:
python manage.py shell
然后运行以下代码插入部门数据:
from app01.models import Department
# 创建部门数据
Department.objects.creat(title="人事部")
Department.objects.creat(title="技术部")
Department.objects.creat(title="财务部")
这会 将部门数据插入到department表中。
models.py
from django.db import models
# 部门管理
class Department(models.Model):
"""部门表"""
#id = models.BigAutoField(verbose_name="ID", primary_key=True)
title = models.CharField(verbose_name="标题", max_length=32,null="True",blank="True")
class UsrInfo(models.Model):
"""员工表"""
name = models.CharField(verbose_name="姓名", max_length=16)
password = models.CharField(verbose_name="密码", max_length=64)
age = models.IntegerField(verbose_name="年龄", default=0)
account = models.DecimalField(verbose_name="账户余额",max_digits=10,decimal_places=2,default=0)
create_time = models.DateTimeField(verbose_name="入职时间")
# #无约束的
# depart_id = models.BigIntegerField(verbose_name="部门ID")
#有约束
# 1.—to, 与那张表关联
# - to_field. 表中的那一列关联
# 2.django自动
# - 写的depart
# - 生成数据列 depart_id
# 3.部门表被删除
# ####3.1 级联删除
depart = models.ForeignKey(to = "Department", to_field="id", on_delete = models.CASCADE)
# ###3.2 置空
#depart = models.ForeignKey(to = "Department", to_field="id", null=True, blank=True, on_delete = models.CASCADE)
# 在django中做约束 男女
gender_choices =(
(1, '男'),
(2,'女'),
)
gender_choices = models.SmallIntegerField(verbose_name="性别",choices=gender_choices)
urls.py
"""
URL configuration for Employee_Management_System project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/5.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
#path('admin/', admin.site.urls),
path('depart/list/',views.depart_list),
# 添加部门
path('depart/add/',views.depart_add),
#删除部门
path('depart/delete/',views.depart_delete),
# 编辑部门
path('depart/<int:nid>/edit/',views.depart_edit)
]
views.py
from django.shortcuts import render, redirect
from app01 import models
# Create your views here.
def depart_list(request):
"""部门列表"""
#却数据库中获取部门信息
queryset = models.Department.objects.all()
return render(request,'depart_list.html',{
'queryset':queryset})
def depart_add(request):
"""添加部门"""
if request.method == "GET":
return render(request,'depart_add.html')
# 获取用户通过post提交的是数据集
title = request.POST.get("title")
# 保存到数据库
models.Department.objects.create(title=title)
#重定项回部门列表
return redirect("/depart/list/")
def depart_delete(request):
""""删除部门"""
# 获取id
nid = request.GET.get('nid')
# 删除
models.Department.objects.filter(id=nid).delete()
# 跳转
return redirect("/depart/list/")
def depart_edit(request,nid):
"""编辑部门"""
if request.method == "GET":
#根据nid获取数据
row_object = models.Department.objects.filter(id=nid).first()
return render(request,'depart_edit.html',{
'row_object':row_object})
#获取用户提交的标题,根据id找到数据库中的数据并进行更新
models.Department.objects.filter