【Django】开发日报_2.2_Day:简易用户管理系统(5)

目录

0、创建测试用例:

1、在表中新增数据:

2、在表中删除元素

(1)有条件删除

(2)无条件,删除表中全部信息

3、获取表中数据

(1)获取全部数据

(2)获取有条件筛选的数据

(3)获取列表中的首行数据

4、更新表中数据

5、测试案例:用户管理程序

 (1)展示用户列表

 (2)添加用户

 (3)删除用户

 (4)修改用户


0、创建测试用例:

djangoproject->urls.py

from django.urls import path
from app import views

urlpatterns = [
    path('index/', views.index),
    path('user/list/',views.user_list),
    path('user/add/',views.user_add),
    path('tpl/',views.tpl),
    path('news/',views.news),
    path('something/',views.something),
    #用户登录
    path('login/',views.login),
    #orm测试
    path('ormtest/',views.ormtest),
]

app->models.py

from django.db import models

# Create your models here.
class UserInfo2(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    #age = models.IntegerField()

class Department(models.Model):
    title = models.CharField(max_length=50)
    Dep_No = models.IntegerField(default=10)
    Dep_Na = models.CharField(max_length=100)
    Dep_data = models.IntegerField(null=True,blank=True)

class Employees(models.Model):
    emp_id = models.CharField(max_length=10)
    position = models.CharField(max_length=50)

class Student(models.Model):
    name = models.CharField(max_length=100)
    sex = models.CharField(max_length=5)
    age = models.IntegerField(default=18)


app->views.py


from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
    #刷新页面测试数据表是否有操作
    return render(request,'ormtest.html')

app->templates->ormtest.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Test is Successful!</h1>
</body>
</html>

1、在表中新增数据:

语法:类名.object.create(添加字段)

例如:

Student.objects.create(name="张三",age=19)

在views中写入以下测试用例:

from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
    #student
    #Student.objects.create(name="张三",age=19)
    #Student.objects.create(name="李华",sex="男",age=17)
    #Student.objects.create(name="王刚",sex="女")
    #employees
    #Employees.objects.create(emp_id=10010,position="技术部")
    #Employees.objects.create(emp_id=10012, position="董事部")
    #UserInfo2
    #UserInfo2.objects.create(name="小强",password=123456)
    #UserInfo2.objects.create(name="小明", password=123456)
    #UserInfo2.objects.create(name="小红", password=123456)

    return render(request,'ormtest.html')

访问页面:

访问数据库:

 

 可看到是否插入成功。

2、在表中删除元素

(1)有条件删除

语法:类名.objects.filter(删除条件).delete()

示例:

Student.objects.filter(id=1).delete()

 这里的filter相当于sql语句中的where。

(2)无条件,删除表中全部信息

语法:类名.objects.all().delete()

示例:

Student.objects.all().delete()

结果:

3、获取表中数据

(1)获取全部数据

data_list = Employees.objects.all()
    print(data_list)

从数据表获取的数据以对象的形式封装在列表中:

 

想要获取对象里面的内容,可以在后面加个点来表示

 print(data_list[0].id,data_list[0].emp_id,data_list[0].position)

数据过多,也可以用循环来迭代:

data_list = Employees.objects.all()
    for obj in data_list:
        print(obj.emp_id,obj.position)

 

(2)获取有条件筛选的数据

 obj = Employees.objects.filter(emp_id=10010)
    print(obj)

(3)获取列表中的首行数据

obj = Employees.objects.filter(emp_id=10010).first()
    obk = Department.objects.all().first()

4、更新表中数据

    UserInfo2.objects.all().update(password="111111")
    UserInfo2.objects.filter(id=2).update(password="222222")
    UserInfo2.objects.filter(name="小明").update(password="333333")

 views.py

from app.models import Student,Employees,Department,UserInfo2
def ormtest(request):
#-------------------1、新建---------------------------
    #student
    #Student.objects.create(name="张三",age=19)
    #Student.objects.create(name="李华",sex="男",age=17)
    #Student.objects.create(name="王刚",sex="女")
    #employees
    #Employees.objects.create(emp_id=10010,position="技术部")
    #Employees.objects.create(emp_id=10012, position="董事部")
    #UserInfo2
    #UserInfo2.objects.create(name="小强",password=123456)
    #UserInfo2.objects.create(name="小明", password=123456)
    #UserInfo2.objects.create(name="小红", password=123456)
#---------------------2、删除------------------------------
    #Student.objects.filter(id=1).delete()
    #Student.objects.all().delete()
#---------------------3、获取------------------------------
    #obj = Employees.objects.filter(emp_id=10010).first()
    #obk = Department.objects.all().first()
    #print(obj)
    #print(obk)
#---------------------4、修改------------------------------
    # UserInfo2.objects.all().update(password="111111")
    # UserInfo2.objects.filter(id=2).update(password="222222")
    # UserInfo2.objects.filter(name="小明").update(password="333333")

    return render(request,'ormtest.html')

5、测试案例:用户管理程序

项目需求:

(1)展示用户列表

        思路:

                先写一个url,

                再写views视图函数,函数功能实现:

                        1、获取所有用户信息

                        2、HTML渲染。

models.py

class UserInfo2(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField(default=18)

urls.py

#用户管理
    path('info/list/',views.info_list),

views.py

def info_list(request):
    #1、获取用户数据库中所有信息
    data_list=UserInfo2.objects.all()
    print(data_list)
    return render(request,'info_list.html',{"data_list":data_list})

info_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>INFOLIST</title>
</head>
<body>
    <h1>INFO列表</h1>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>密码</th>
                <th>年龄</th>
            </tr>
        </thead>
        <tbody>
            {% for item in data_list %}
                <tr>
                    <td>{
   
   { item.id }}</td>
                    <td>{
   
   { item.name }}</td>
                    <td>{
   
   { item.password }}</td>
                    <td>{
   
   { item.age }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

网页:

数据库:

 

获取成功!

 (2)添加用户

思路:

        添加url

        编写视图函数

                1、先发送GET请求,看到页面,输入内容

                2、发送POST请求,输入内容,提交,写入数据库。

url.py

 #添加用户
    path('info/list/add/',views.info_list_add),

views.py

def info_list_add(request):
    if request.method == "GET":
        return render(request,'info_list_add.html')
    #不执行if语句则请求方法为POST;获取用户提交的数据
    user = request.POST.get("user")
    pwd = request.POST.get("pwd")
    age = request.POST.get("age")
    #添加数据到数据库
    UserInfo2.objects.create(name=user,password=pwd,age=age)
    #自动跳转到用户列表页面
    #return redirect("http://127.0.0.1:8000/info/list/")
    return redirect("/info/list/")

info_list_add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ADD</title>
</head>
<body>
    <h1>添加用户</h1>
    <form method="post" action="/info/list/add/">
        {% csrf_token %}
        <input type="text" name="user" placeholder="用户名">
        <input type="text" name="pwd" placeholder="密码">
        <input type="text" name="age" placeholder="年龄">
        <input type="submit" value="提交">
    </form>
</body>
</html>

演示:

数据库

优化一下:

在列表页面加上添加跳转按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>INFOLIST</title>
</head>
<body>
    <h1>INFO列表</h1>
    <a href="/info/list/add/">添加</a>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>密码</th>
                <th>年龄</th>
            </tr>
        </thead>
        <tbody>
            {% for item in data_list %}
                <tr>
                    <td>{
   
   { item.id }}</td>
                    <td>{
   
   { item.name }}</td>
                    <td>{
   
   { item.password }}</td>
                    <td>{
   
   { item.age }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

 网页:

 (3)删除用户

        思路:

                1、先写url

                2、再写views函数:

                        (1)通过url网址传递的参数,判断删除条件:

                                http://127.0.0.1:8000/info/list/delete?id=1

                                ……

                        (2)id = request.GET。get("id")

                                UserInfo.objects.filter(id=id).delete()

urls.py

 #删除用户
    path('info/list/delete/',views.info_list_delete),

views.py

def info_list_delete(request):
    id = request.GET.get('id')
    UserInfo2.objects.filter(id=id).delete()
    return HttpResponse("删除成功")

访问: 

 id为10的已经被删除

 由于手动在url中编写参数过于麻烦,所以做如下改进:

info_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>INFOLIST</title>
</head>
<body>
    <h1>INFO列表</h1>
    <a href="/info/list/add/">添加</a>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>密码</th>
                <th>年龄</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            {% for item in data_list %}
                <tr>
                    <td>{
   
   { item.id }}</td>
                    <td>{
   
   { item.name }}</td>
                    <td>{
   
   { item.password }}</td>
                    <td>{
   
   { item.age }}</td>
                    <td>
                        <a href="/info/list/delete/?id={
   
   { item.id }}">删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

views.py

def info_list_delete(request):
    id = request.GET.get('id')
    UserInfo2.objects.filter(id=id).delete()
    return redirect("/info/list/")

访问:

 点击操作栏,即可删除数据并返回当前列表界面

 (4)修改用户

        等待后期更简单的方法。

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/126800769
今日推荐