django分頁系統

1.創建項目 並在settings.py 設置和其他基本操作

2.往數據庫裏添加數據,此次數據庫用的是mysql數據庫,

如果使用mysql數據庫,要注意

   ①在創建的工程文件中的init文件中 要引入mysql

import pymysql
pymysql.install_as_MySQLdb()

  而且在settings.py中爲數據庫設置相關信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'django',
        'HOST':'localhost',
        'USER':'root',
        'PASSWORD':'891811395',
        'PORT':3306
    }
}

   ②在app文件夾下models.py中 設置字段 以便數據庫建表

from django.db import models

# Create your models here.
class Goods(models.Model):
    name = models.CharField(max_length=100)
    des = models.CharField(max_length=1000)

    class Meta:
        db_table = 'goods'

 

def index(request):

利用隨機數添加數據

import random
def index(request):

    # for x in range(200):
    #     good = Goods(name='good%s'%x
    #                  ,des = '該商品物美價廉,現在只需要{}元'.format(random.randint(10,100)))
    #     good.save()
    return HttpResponse('數據添加成功')

3.

def select(request):在此方法下,先獲取總的數據 good_list = Goods.objects.all()

4.設置分頁顯示規則:paginator = Paginator(good_list ,12 ,3)  意爲:一頁12個數據,當最後一條數據少於3條時,將數據併到上頁

5.網址中頁碼值將會有三種情況

    try:
        # GET請求方式 get()獲取指定key值對應的value值
        # 獲取index的值 如果沒有 則設置使用默認值1
        #              有值的話 在下面傳遞number到index.html
        num = request.GET.get('index','1')
        number = paginator.page(num)
    except PageNotAnInteger:
        # 如果輸入的頁碼數不是整數,那麼顯示第一頁數據
        number = paginator.page(1)
    except EmptyPage:
        # 如果頁碼數不在當前頁碼範圍內 ,則顯示最後一頁
        # paginator.num_pages 獲取當前總頁數
        # paginator.page() 獲取指定的某一頁
        number = paginator.page(paginator.num_pages)
    # jiang 當前頁頁碼 and 當前頁數據 傳遞到html
    return render(request,'index.html',{'page':number,'paginator':paginator})

6.設置頁面

index.html中,使用靜態資源時 不光要在html頁面加載靜態資源,在settings.py中 也要進行設置

# 設置的是app裏面的靜態資源
STATIC_URL = '/static/'
# 設置的是項目裏的靜態資源、
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
    <title>淘寶{{page}}</title>
</head>
<body>
        {% for good in page.object_list %}
            <h4>{{good.name}} - {{good.des}}</h4>
        {% endfor %}

        <ul class="pagination">
            {# 如果當前頁還有上一頁 #}
            {% if page.has_previous %}
                <li>
                    {# 點擊a標籤 跳轉到上一頁鏈接 ?index= 爲地址後面拼接的參數 #}
                    <a href="?index={{page.previous_page_number}}">上一頁</a>
                </li>
            {% else %}
                {# 如果沒有上一頁,則按鈕不可點擊 #}
                <li class="disabled">
                    <a href="#">上一頁</a>
                </li>
            {% endif %}

            {% for page_number in paginator.page_range %}
                {# page.number 獲取當前頁的頁碼 #}
                {% if page_number == page.number %}
                    <li class="active" >
                        <a href="?index={{page_number}}">{{page_number}}</a>
                    </li>
                {% else %}
                    <li>
                        <a href="?index={{page_number}}">{{page_number}}</a>
                    </li>
                {% endif %}
            {% endfor%}

            {% if page.has_next %}
                <li>
                    <a href="?index={{page.next_page_number}}">下一頁</a>
                </li>
            {% else %}
                <li class="disabled">
                    <a href="#">下一頁</a>
                </li>

            {% endif %}
        </ul>

    <script src="{% static 'js/jquery.js' %}"></script>
    <script src="{% static 'js/bootstrap.js' %}"></script>
</body>
</html>

7.運行項目前需要,先查看可遷移文件 終端命令python manage.py makemigrations

然後遷移文件 終端命令:python manage.py migrate

啓動運行服務器  python manage.py runserver (默認8000 也可自行設置如8080)

在網頁輸入網址 localhost:8000 進行操作即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章