自从学了Django之后,我可真粉了银角大王武沛齐,怎么说呢,还挺感慨,好好学习就对了。
学以致用,学以致用,学了Django中的ORM,怎么能够不写一个小案例呢?
那么一起来写一个用户管理的小demo吧!
用户管理需求分析
需求:
- 展示用户列表
- 添加用户
- 删除用户
用户管理
那就一步步来编写吧!
其实写代码就是这样,一步步来分析,先写一个基本的功能,然后再去一点点的完善优化,所以不要怕麻烦奥!
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})
展示流程:
- 获取数据库数据
- 前端测试数据格式和内容
- 渲染并且返回页面
<!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版权协议,转载请附上原文出处链接和本声明。