urls:
urlpatterns = [
path('addinfo/', views.add_info, name='add_info'),
path('selectinfotwo/<int:page>/', views.select_infotwo, name='select_infotwo'),
]
models:
class Form_Info(models.Model):
id = models.AutoField(primary_key=True, unique=True, null=False)
users_names = models.CharField(max_length=16, unique=True)
users_pass = models.CharField(max_length=8)
class Meta:
db_table = 'Form_Info'
forms:
class AddInfoForms_Validation(forms.Form):
users_names = forms.CharField(
required=True,
max_length=16,
min_length=8,
label='用户名',
error_messages={
'required': "用户名不能为空",
'max_length': "用户名最长不能超过8个汉字",
'min_length': "用户名最少不能低于4个汉字"
}
)
views:
def add_info(request):
if request.method == "GET":
return render(request, 'useradd.html')
elif request.method == "POST":
Validation = AddInfoForms_Validation(request.POST)
if Validation.is_valid():
users_names = request.POST.get("users_names")
users_pass = request.POST.get("users_pass")
save = Form_Info.objects.create(users_names=users_names, users_pass=users_pass)
return redirect(reverse("django_form:select_info", kwargs={'id': 1}))
else:
return render(request, 'useradd.html', {'info': Validation.errors})
# Django内置分页
def select_infotwo(request, page):
data_list = Form_Info.objects.all().order_by("-id")
# 全部数据:data_list,=》得出共有多少条数据
# per_page: 每页显示条目数量
# count: 数据总个数
# num_pages:总页数
# page_range:总页数的索引范围,如: (1,10),(1,200)
# page: page对象(是否具有下一页;是否有上一页;)
current_page = request.GET.get('p', page) # 当前页码
current_page = int(current_page)
# Paginator对象
paginator = Paginator(data_list, 1) # 一页放10个数据
# 加判断当总页数大于10页 让一部分不显示出来
if paginator.num_pages > 10:
if current_page - 5 < 1:
posts_list = range(1, 11)
elif current_page + 5 > paginator.num_pages:
posts_list = range(current_page - 5, paginator.num_pages + 1)
else:
posts_list = range(current_page - 5, current_page + 5)
else:
# 当小于等于10页时全部显示
posts_list = paginator.page_range
try:
# Page对象
posts = paginator.page(current_page)
# has_next 是否有下一页
# next_page_number 下一页页码
# has_previous 是否有上一页
# previous_page_number 上一页页码
# object_list 分页之后的数据列表,已经切片好的数据
# number 当前页
# paginator paginator对象
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(request, 'userselecttwo.html', {'posts': posts, "posts_list": posts_list})
userselect.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" id="change_color" href="{% static 'css/blue.css' %}"/>
<link rel="stylesheet" type="text/css" href="{% static 'css/all_select.css' %}"/>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'plugin/bootstrap_table/bootstrap-table.css' %}">
<script type="text/javascript" src="{% static 'js/jquery-3.1.1.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script type="text/javascript" src="{% static 'plugin/bootstrap_table/bootstrap-table.min.js' %}"></script>
<script type="text/javascript" src="{% static 'plugin/layer/layer.js' %}"></script>
<script src="{% static 'js/all_select_serch.js' %}"></script>
<script>
$(function () {
$(window.parent.document).find(".tab_v>li>a:contains('平台用户信息修改')").parent().remove();
})
</script>
</head>
<body>
<div class="container-fluid leftp" role="main">
<div class="row">
<!--警告框-->
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">×</span></button>
<span class="glyphicon glyphicon-info-sign"></span>友情提示,这里是平台用户查看!<a
href="{% url 'django_form:add_info' %}">添加信息</a>
</div>
<!--面板-->
<form class="form-inline" method="post" action=''>{% csrf_token %}
<div class="panel panel-primary panel-table">
<div class="panel-heading add-panel clearfix">
<label class="pull-left"><span class="glyphicon glyphicon-list-alt"></span>平台用户查看</label>
</div>
<div class="panel-body panel-table" id="goodsList">
<table data-toggle="table" data-height="340" class="table table-striped table-hover"
id="tableL01">
<thead>
<th data-width="80px">ID编号</th>
<th data-width="120px">用户名</th>
<th data-width="120px">密码</th>
</thead>
<tbody id="testTbody">
{% for row in posts.object_list %}
<tr>
<td class='text-center'>{{ row.id }}</td>
<td>{{ row.users_names }}</td>
<td>{{ row.users_pass }}</td>
</tr>
{% empty %}
<tr>
<td colspan="12" align="center">
您还没有添加信息
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</form>
</div>
<nav aria-label="Page navigation example" class="text-center">
<ul class="pagination">
<li class="page-item">
<a class="disabled" href="#"><span aria-hidden="true">共{{ posts.paginator.count }}条</span> | <span aria-hidden="true">每页{{ posts.paginator.per_page }}条</span></a>
</li>
<li class="page-item">
<a class="disabled" href="{% url 'django_form:select_infotwo' 1 %}"><span aria-hidden="true">首页</span></a>
</li>
<li class="page-item">
{% if posts.has_previous %}
<a class="disabled" href="{% url 'django_form:select_infotwo' posts.previous_page_number %}" aria-label="Previous">上一页</a>
{% else %}
<a class="disabled">上一页</a>
{% endif %}
</li>
{% for i in posts_list %}
{% if i == posts.number %}
<li class="active"><a class="page-link" href="#">{{ i }}</a></li>
{% else %}
<li class="page-link"><a class="page-link" href="{% url 'django_form:select_infotwo' i %}">{{ i }}</a></li>
{% endif %}
{% endfor %}
<li class="page-item">
{% if posts.has_next %}
<a class="disabled" href="{% url 'django_form:select_infotwo' posts.next_page_number %}" aria-label="Next">下一页</a>
{% else %}
<a class="disabled" aria-label="Next">下一页</a>
{% endif %}
</li>
<li class="page-item">
<a class="disabled" href="{% url 'django_form:select_infotwo' 0 %}"><span aria-hidden="true">尾页</span></a>
</li>
<li class="page-item">
<a class="disabled" href="#"><span aria-hidden="true">共{{ posts.paginator.num_pages }}页</span></a>
</li>
</ul>
</nav>
</div>
<script src="{% static 'js/alldh.js' %}"></script>
<script src="{% static 'js/nav.js' %}"></script>
</body>
</html>