通过部门管理的增删改查,大概了解了django的过程,下面通过管理员模块来复习一遍。
前期准备
1 创建管理员的Model类
# 创建管理员表
class Admin(models.Model):name = models.CharField(max_length=100)password = models.CharField(max_length=100)sex_choice = (('1', '男'),('2', '女'))sex = models.CharField(max_length=2, choices=sex_choice)
2 执行以下语句,把表映射到数据库中
manage.py@MS > makemigrations
manage.py@MS > migrate
效果如下:
下面开始进行管理员列表模块的实现
首先是在模板文件里,新增管理员模块入口
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li class="active"><a href="/dept/list/">部门管理</a></li></ul><ul class="nav navbar-nav"><li class="active"><a href="/admin/list/">管理员</a></li></ul>
效果如下:
添加URL路径
urlpatterns = [# 部门管理path("dept/list/", dept.dept_list),path("dept/add/", dept.dept_add),path("dept/<int:nid>/edit_detail/", dept.dept_editdetail),path("dept/<int:nid>/delete/", dept.dept_delete),path("dept/search/", dept.dept_search),# 管理员管理path("admin/list/", admin.admin_list),]
去my_views目录下创建admin.py,并新建admin_list()方法
from django.http import HttpResponsedef admin_list(request):return HttpResponse("admin_list is ok")
测试成功,效果如下:
我们让他返回一个html页面
from django.http import HttpResponse
from django.shortcuts import renderdef admin_list(request):# return HttpResponse("admin_list is ok")return render(request, 'admin_list.html')
新建admin_list.html页面,继承base.html
{% extends 'base.html' %}{% block content %}{% endblock %}
接着去函数里去遍历admin_list里的数据,我先用navicat随便创建2条数据
接着我们去修改admin_list()的业务逻辑
from django.shortcuts import renderfrom app01 import modelsdef admin_list(request):# return HttpResponse("admin_list is ok")# 查询所有的数据queryset = models.Admin.objects.using("default").all()context = {"queryset": queryset}return render(request, 'admin_list.html', context)
接着我们去admin_list.html里去实现数据展示,通过表单获取数据,然后进行遍历
{% extends 'base.html' %}{% block content %}<div class="container-fluid"><div style="margin-bottom: 10px" class="clearfix"><div class="panel panel-default"><div class="panel-body"><div style="float: left"><p>管理员列表</p></div><!-- Table --><table class="table"><thead><tr><th>ID</th><th>name</th><th>password</th><th>sex</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.get_sex_display }}</td><td><a class="btn btn-success" href="#" role="button">编辑管理员</a><a class="btn btn-danger" href="#" role="button">删除管理员</a></td></tr>{% endfor %}</tbody></table>{% if error %}<div style="color: red;">{{ error }}</div>{% endif %}</div></div></div></div>
{% endblock %}
效果如下: