P47内容概要
管理员账户(增删改查)
P48管理员列表
def admin_list(request):
# 搜索
data_dict = {}
search_data = request.GET.get('q', '')
if search_data:
data_dict['username__contains'] = search_data
queryset = models.Admin.objects.filter(**data_dict)
from app03_phone_number_management.utils.pagination import Pagination
page_object = Pagination(request, queryset)
context = {
"queryset": page_object.page_queryset,
"page_string": page_object.html(),
"search_data": search_data,
}
return render(request, 'admin_list.html', context )
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<div style="margin-bottom: 10px" class="clearfix">
<a class="btn btn-success" href="/admin_add/" target="_blank">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
新建管理员
</a>
<div style="float: right; width: 300px;">
{# <input type="text" placeholder="搜索靓号" name="q">#}
<form action="/pretty_list/" method="GET">
<div class="input-group">
<input type="text" class="form-control" placeholder="搜索靓号" name="q" value="{{ search_data }}">
<span class="input-group-btn">
<button class="btn btn-default" type="submit">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
</button>
</span>
</div><!-- /input-group -->
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
管理员账户列表
</div>
<div class="panel-body">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>管理员名称</th>
<th>密码</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for obj in queryset %}
<tr>
<th>{{ obj.id }}</th>
<th>{{ obj.username }}</th>
<th>*******</th>
<td>
<a href="/admin_edit/{{ obj.id }}/" class="btn btn-primary btn-xs">编辑</a>
<a href="/admin_del/{{ obj.id }}/" class="btn btn-danger btn-xs">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="panel panel-default">
<ul class="pagination">
{{ page_string }}
</ul>
</div>
</div>
{% endblock %}
P19管理员添加
class BootStrapModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for name, field in self.fields.items():
if field.widget.attrs:
field.widget.attrs['class'] = "form-control"
field.widget.attrs['placeholder'] = field.label
else:
field.widget.attrs = {
'class': 'form-control',
'placeholder': field.label
}
class AdminModelForm(BootStrapModelForm):
confirm_password = forms.CharField(
label="确认密码",
widget=forms.PasswordInput,
)
class Meta:
model = models.Admin
fields = ["username", "password", "confirm_password"]
widgets = {
'password': forms.PasswordInput,
}
def admin_add(request):
context = {
'title': "添加管理员",
'form': AdminModelForm(),
}
return render(request, 'change.html', context)
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ title }}</h3>
</div>
<div class="panel-body">
{# novalidate关闭浏览器校验#}
<form action="/pretty_add/" method="POST" novalidate>
{% csrf_token %}
{% for field in form %}
<div class="form-group">
<label>
{{ field.label }}
<span style="color: red">{{ field.errors.0 }}</span>
</label>
{{ field }}
</div>
{% endfor %}
<button type="submit" class="btn btn-default">提交</button>
</form>
</div>
</div>
</div>
{% endblock %}