联通用户管理系统(一)

#联通用户管理系统(一)
在这里插入图片描述

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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值