urls:
urlpatterns = [
path('addinfo/', views.add_info, name='add_info'),
path('selectinfotwo/
]
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 %}