基于Pycharm的Django学习 —— 用户管理小demo

自从学了Django之后,我可真粉了银角大王武沛齐,怎么说呢,还挺感慨,好好学习就对了。

学以致用,学以致用,学了Django中的ORM,怎么能够不写一个小案例呢?

那么一起来写一个用户管理的小demo吧!

用户管理需求分析

需求:

  1. 展示用户列表
  2. 添加用户
  3. 删除用户

用户管理

那就一步步来编写吧!

其实写代码就是这样,一步步来分析,先写一个基本的功能,然后再去一点点的完善优化,所以不要怕麻烦奥!

urls.py —— views.py —— html

展示用户列表

在这里插入图片描述

def info_list(request):
    # 获取数据库中所有信息
    data_list = models.UserInfo.objects.all()
    # 在后端函数中测试需要传过去的数据 确保传过去的数据正确 然后再移植到前端 并且更改相应的语法规则
    print(data_list)
    # 渲染 返回给前端
    return render(request, "info_list.html", {"data_list": data_list})

展示流程:

  1. 获取数据库数据
  2. 前端测试数据格式和内容
  3. 渲染并且返回页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户列表</h1>
    <!--在列表页面添加一个按钮 一点就可以跳转到添加页面-->
    <!--http://127.0.0.1:8000/info/add/ 因为是自家的网站 就可以不用写域名了-->
    <div style="height:50px">
        <a href="/info/add/">添加用户</a>
    </div>
    <table border="1" style="border-collapse:collapse">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>密码</th>
                <th>年龄</th>
                <th>操作</th>
            </tr>
        </thead>
        <!--先用静态数据测试-->
        <!--<tbody>
            <tr>
                <td>1</td>
                <td>王晓曼</td>
                <td>123</td>
                <td>20</td>
            </tr>
        </tbody>-->
        <tbody>
            {% for data in data_list %}
            <tr>
                <td>{{data.id}}</td>
                <td>{{data.name}}</td>
                <td>{{data.password}}</td>
                <td>{{data.age}}</td>
                <td>
                    <a href="/info/delete/?nid={{data.id}}">删除</a>
                </td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

在编写前端页面的时候,也需要注意,先是使用静态数据演示,然后再换成后端传来的数据,这样也方便测试,因为写代码不是一蹴而就的。

在这里插入图片描述

添加用户

在这里插入图片描述

def info_add(request):
    if request.method == "GET":
        return render(request, "info_add.html")
    # 如果是POST 获取用户数据
    name = request.POST.get("user")
    password = request.POST.get("password")
    age = request.POST.get("age")
    # 添加到数据库
    models.UserInfo.objects.create(name=name, password=password, age=age)

    return redirect("/info/list")

在测试页面跳转情况时,一定是需要响应的奥,可看前面的三种响应。

如果还在测试功能阶段,可以响应文本,再输入url去指定页面查看。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>添加用户</h1>
    <!--action如果不写 那么就是向当前地址发送post请求  这个地方不要瞎写 不然这里的url和函数里的不匹配 那就出错了-->
    <form method="post">
      {% csrf_token %}
      <label>用户名:<input type="text" name="user" placeholder="用户名"> </label>
      <label>密码:<input type="password" name="password" placeholder="密码"> </label>
      <label>年龄:<input type="text" name="age" placeholder="年龄"> </label>
      <input type="submit" value="提交">
    </form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除用户

在这里插入图片描述
我们是假设这样的功能:当用户输入http://127.0.0.1:8000/info/delete/?nid=这样的url时,就在数据库删除用户所输入的对应用户id的信息,并且跳转到用户列表展示页面。

def info_delete(request):
    nid = request.GET.get("nid")
    models.UserInfo.objects.filter(id=nid).delete()
    return redirect("/info/list")

因为要是用户一直去输入url,可能有一点繁琐,所以我们在前端列表中,多增加了一列,这样的话,就可以通过链接来拼接url并且实现跳转。

在这里插入图片描述
在这里插入图片描述
当然,上述只是为了演示案例,并没有美化页面,后期我们会写一个综合的大项目奥。


版权声明:本文为qq_43779149原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。