Django框架(二十二:实现分页功能的几种方式)

介绍三种实现分页功能的方式,前两种为简单的,后一种稍微复杂一些
第一种方式:
如图所示,能一次将所有页都能展示出来
在这里插入图片描述
视图函数:

from django.core.paginator import Paginator, PageNotAnInteger, InvalidPage, EmptyPage
def select(request):
    # 1. 把需要分页的数据全部查询出来;
    user_list = User.objects.all()
    # 2. 利用user_list数据,创建一个分页器对象
    # 参数1:要分页的数据;参数2:设置每页要展示的数据个数;参数3:如果最后一页不到5个数据,是否将最后一页的数据合并到上一页进行展示;默认是False,不合并;
    paginator = Paginator(user_list, 5)
    # 3. 创建页面对象Page,每一个page对应的是每一个页面,这个page中包含:
    # page对象有三个属性:
    # a> page.number: 表示当前查询的页码;
    # b> page.object_list: 表示当前页要展示的数据;
    # c> page.paginator: 它就是上面创建的Paginator(user_list, 5)这个对象,无论是哪一页,这个paginator对象始终跟着Page对象;
    try:
        page_number = request.GET.get('page', '1')
        page = paginator.page(page_number)
    except (PageNotAnInteger, EmptyPage, InvalidPage):
        # 如果出现上述异常,默认展示第1页
        page = paginator.page(1)

    return render(request, 'index.html', {'page': page})

模板中:

<nav aria-label="Page navigation">
        {% for data in page.object_list %}
            <p>{
  { data.id }}-{
  { data.name }}-{
  { data.age }}</p>
        {% endfor %}
        <ul class="pagination">
            {% if page.has_previous %}
       
  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django框架提供了方便的用户认证系统,可以轻松地实现登录和注册功能。以下是一个简单的示例: 1. 首先,在`settings.py`文件中设置`AUTH_USER_MODEL`为你自己创建的用户模型类,例如: ``` AUTH_USER_MODEL = 'myapp.MyUser' ``` 2. 在`urls.py`文件中添加登录和注册的URL: ```python from django.urls import path from django.contrib.auth import views as auth_views from myapp.views import register urlpatterns = [ path('login/', auth_views.LoginView.as_view(), name='login'), path('logout/', auth_views.LogoutView.as_view(), name='logout'), path('register/', register, name='register'), ] ``` `auth_views.LoginView.as_view()`和`auth_views.LogoutView.as_view()`是Django内置的视图类,用于处理登录和注销请求。`register`是自己定义的注册视图函数。 3. 创建注册视图函数: ```python from django.shortcuts import render, redirect from django.contrib.auth.forms import UserCreationForm from django.contrib.auth import authenticate, login def register(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): form.save() username = form.cleaned_data.get('username') raw_password = form.cleaned_data.get('password1') user = authenticate(username=username, password=raw_password) login(request, user) return redirect('home') else: form = UserCreationForm() return render(request, 'register.html', {'form': form}) ``` 这个视图函数使用了Django内置的`UserCreationForm`表单类,用于展示注册表单和验证表单数据。如果表单验证通过,就保存新用户并自动登录,然后重定向到主页。 4. 在模板文件中展示登录和注册表单: ```html {% if user.is_authenticated %} <p>Welcome, {{ user.username }}!</p> <a href="{% url 'logout' %}">Logout</a> {% else %} <a href="{% url 'login' %}">Login</a> <a href="{% url 'register' %}">Register</a> {% endif %} ``` 这个模板代码根据用户是否已经登录来展示不同的内容,如果已经登录就显示欢迎信息和注销链接,否则就显示登录和注册链接。 以上就是一个简单的Django登录和注册功能实现方法。当然,具体的实现方式可能因为项目需求而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值