欢迎来到军工软件开发人才培养基地——学到牛牛

Django用户管理案例——案例1

时间:2024-05-06 07:01:10 来源:学到牛牛

案例1主要介绍Django框架的应用,从而实现对数据的增、删、改和查的操作。

Django用户管理入门案例,主要有查询用户、添加用户和删除用户三个功能。其中查询用户是将指定表中的所有数据以列表形式显示到HTML页面;添加用户功能可以添加用户相关信息,并将这些信息写入到指定表中;删除用户功能可以根据用户的ID字段删除该用的数据。

1、业务要求

实现对用户的查询、添加和删除功能,如下图所示。

 

2、业务流程

首先在浏览器地址栏输入http://127.0.0.1:8000/info/list/登录用户展示页面,在用户展示页面中提供对所有用户的查看功能和添加用户、删除用户功能。

当点击添加用户按钮,进入到用户添加页面,输入用户相关信息,点击提交按钮将用户信息插入到数据库中,完成数据插入后返回到用户展示页面。

当点击删除用户按钮,获取被删除用户的指定ID,并根据ID删除当前用户,完成用户删除后返回到用户展示页面。

具体业务流程如下图所示。

3、代码显示

3.1 创建用户表

在models.py文件中创建UserInfo类,具体代码如下。

 

 

生成表;在Pycharm编译工具中点击Tool --> Run Manage.py Task选项,打开Django执行命令界面,依次执行makemigrations命令和migrate命令,在指定数据库中生成新表。

 

3.2 展示用户列表

查询指定表中所有数据,并展示到HTML页面中显示。

a. 在urls.py文件中,设置访问用户列表函数的访问路径。

# 案例:用户管理

path('info/list/', views.info_list),

 

b. 在views.py文件中,创建info_list函数,编写查看UserInfo表中数据逻辑,并将查看的结果返回给info_list.html页面。

 

 

c. 在info_list.html文件中获取返回的数据,并展示到页面中。

<!DOCTYPE html>

<html>

   <head>

      <meta charset="UTF-8">

      <title>查看用户</title>

   </head>

   <body>

      <h3>用户列表</h3>

      <a href="/info/add/">添加用户</a>

      <table border="1">

         <thead>

            <tr>

               <th>ID</th>

               <th>姓名</th>

               <th>密码</th>

               <th>年龄</th>

               <th>注册时间</th>

               <th>操作</th>

            </tr>

         </thead>

         <tbody>

            {% for obj in data_list %}

               <tr>

                  <td>{{ obj.id }}</td>

                  <td>{{ obj.name }}</td>

                  <td>{{ obj.password }}</td>

                  <td>{{ obj.age }}</td>

                  {# 按照指定格式显示时间 #}

                  <td>{{ obj.registration_time|date:"Y-m-d"}}</td>

                  {# 拼接删除的跳转地址 #}

                  <td>

                     <a href="/info/delete/?nid={{ obj.id }}">删除</a>

                  </td>

               </tr>

            {% endfor %}

         </tbody>

      </table>

   </body>

</html>

说明:上述代码中<td>{{ obj.registration_time|date:"Y-m-d"}}</td>,表示将数据库中时间类型的字段,以指定格式显示在页面。

 

3.2 添加用户

点击添加用户按钮,跳转到添加用户界面。输入用户相关信息后,点击提交按钮将用户信息写入到数据库,然后再返回到用户列表页面。

a. 在urls.py文件中,设置访问用户列表函数的访问路径。

# 添加用户

path('info/add/', views.info_add),

 

b. 在info_list.html文件中设置添加用户。

... 

<h3>用户列表</h3>

      <a href="/info/add/">添加用户</a>

      <table border="1">

      ...

说明:在Django项目中使用<a>标签、重定向或者其它跳转方式时,跳转到外部网址需要在网址前添加域名(如:https://www.baidu.com),如果在当前项目中跳转,则不需要添加域名,Python会自动的拼接当前的域名(如:<a href=”/info/add/”>跳转</a>,实则为<a href=”http://127.0.0.1:8000/info/list/”>跳转</a>,或者redirect("/info/list"),实则为http://127.0.0.1:8000/info/list/)。

 

c. 在views.py文件中编写添加数据逻辑,大概步骤如下。

第一步:将请求转发到添加数据页面(info_add.html)。

第二步:在info_add.html文件编写<form>标签收集用户信息,然后将用户信息一起打包,跟请求一起提交到URL为/info/add/的函数中。

第三步:获取请求中的数据。

第四步:将数据写入到数据库。

第五步:跳转到用户列表页面,查询所有用户数据。

 

 

d. 添加数据页面

<!DOCTYPE html>

<html>

   <head>

      <meta charset="UTF-8">

      <title>添加用户</title>

   </head>

   <body>

      {# 注意:如果向当前地址发送请求,action="/info/add/"可以不写,默认表示向"/info/add/"地址发送请求 #}

      <form method="post">

         {% csrf_token %}

         <input type="text" name="user" placeholder="用户名">

         <input type="text" name="pwd" placeholder="密码">

         <input type="text" name="age" placeholder="年龄">

         <input type="text" name="registration" placeholder="注册时间">

         <input type="submit" value="提交">

      </form>

   </body>

</html>

 

说明:<form>标签没有设置action来访问指定的地址,是因为在Django中向当前的地址发送请求action可以不写,Django会默认以当前的地址为请求地址(例如:当前默认请求地址为action=”/info/add/”)。

 

3.2 删除用户

点击删除用户按钮,删除指定用户数据。数据删除后返回到用户列表页面。

a. 在urls.py文件中,设置访问用户列表函数的访问路径。

# 删除用户

path('info/delete/', views.info_delete),

 

b. 在页面添加删除按钮

<table border="1">

   <thead>

      <tr>

         <th>ID</th>

         <th>姓名</th>

         <th>密码</th>

         <th>年龄</th>

         <th>注册时间</th>

         <th>操作</th>

      </tr>

   </thead>

   <tbody>

      {% for obj in data_list %}

         <tr>

            <td>{{ obj.id }}</td>

            <td>{{ obj.name }}</td>

            <td>{{ obj.password }}</td>

            <td>{{ obj.age }}</td>

            {# 按照指定格式显示时间 #}

            <td>{{ obj.registration_time|date:"Y-m-d"}}</td>

            {# 拼接删除的跳转地址 #}

            <td>

               <a href="/info/delete/?nid={{ obj.id }}">删除</a>

            </td>

         </tr>

      {% endfor %}

   </tbody>

</table>

 

c. 在views.py文件中编写删除指定用户数据逻辑。数据删除后返回到用户列表页面。