通过部门管理的增删改查,大概了解了django的过程,下面通过管理员模块来复习一遍。
前期准备
1 创建管理员的Model类
python
# 创建管理员表
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
效果如下:
下面开始进行管理员列表模块的实现
首先是在模板文件里,新增管理员模块入口
html
<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路径
python
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()方法
python
from django.http import HttpResponse
def admin_list(request):
return HttpResponse("admin_list is ok")
测试成功,效果如下:
我们让他返回一个html页面
html
from django.http import HttpResponse
from django.shortcuts import render
def admin_list(request):
# return HttpResponse("admin_list is ok")
return render(request, 'admin_list.html')
新建admin_list.html页面,继承base.html
html
{% extends 'base.html' %}
{% block content %}
{% endblock %}
接着去函数里去遍历admin_list里的数据,我先用navicat随便创建2条数据
接着我们去修改admin_list()的业务逻辑
python
from django.shortcuts import render
from app01 import models
def 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里去实现数据展示,通过表单获取数据,然后进行遍历
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 %}
效果如下: