การแบ่งหน้าตาราง Pagination โดยใช้ flask paginate สำหรับคนใช้ Python ทำเว็บ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
chatee supasand
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 649
ลงทะเบียนเมื่อ: 04/06/2019 10:06 am

การแบ่งหน้าตาราง Pagination โดยใช้ flask paginate สำหรับคนใช้ Python ทำเว็บ

โพสต์โดย chatee supasand » 05/07/2019 11:34 am

การทำหน้าในส่วนของการแบ่งหน้าตารางนั้นสามารถทำได้เหมือนกันในภาษา Pythonซึ่งตัวของภาษาไพทอนเอง ก็มี ตัวของ flask ที่เป็นเฟรมเวิร์ค
ที่เขียนขึ้นมาใช้งาน สำหรับภาษาไพทอน ในที่นี้เราจะใช้งานในส่วนของ flask paginate เพื่อใช้ในการสร้าง Pagination ให้กับตาราง ข้อมูลของเรา
ที่เราต้องการจะแสดง

โค้ด: เลือกทั้งหมด

from flask_paginate import Pagination, get_page_args


จะมีตัวอย่างดังนี้

โค้ด: เลือกทั้งหมด

from flask_paginate import Pagination, get_page_args #เลือกใช้คำสั่ง

app = Flask(__name__)
app.config.from_pyfile('app.cfg')#ไฟล์ confic ตั้งจำนวนที่จะให้แสดงจำนวนในแถว

@app.route('/show') #กำหนด หน้า path
def show(): #def  เป็นคำสำคัญสำหรับการสร้างฟังก์ชัน
        cur.execute('select count(*) from genpdf') #เรียกข้อมูลจากตาราง
        total = cur.fetchone()[0]
        page, per_page, offset = get_page_args(page_parameter='page',
                                               per_page_parameter='per_page')
        sql = "SELECT * FROM genpdf ORDER BY fileid LIMIT {} OFFSET {}" \
            .format(per_page, offset) #แสดงตารางโดยใช้ Limit ในการกำหนดค่า
        sql = sql.decode('utf8')
        print(sql)
        cur.execute(sql)
        rows = cur.fetchall()  # ทำการเลือกข้อมูลทั้งหมด
        pagination = get_pagination(page=page,
                                    per_page=per_page,
                                    total=total,
                                    record_name='users',
                                    format_total=True,
                                    format_number=True,
                                    )
        return render_template('show.html', rows=rows,
                               page=page,
                               per_page=per_page,
                               pagination=pagination, )  # เรนเดอร์ไฟล์ที่ชื่อ show ที่อยู่ในไดเร้กทอรี่ที่ชื่อ templates
                               
                               def get_css_framework():
    return current_app.config.get('CSS_FRAMEWORK', 'bootstrap4')


def get_link_size():
    return current_app.config.get('LINK_SIZE', 'sm')


def get_alignment():
    return current_app.config.get('LINK_ALIGNMENT', '')


def show_single_page_or_not():
    return current_app.config.get('SHOW_SINGLE_PAGE', False)

def get_pagination(**kwargs):
    kwargs.setdefault('record_name', 'records')
    return Pagination(css_framework=get_css_framework(),
                      link_size=get_link_size(),
                      alignment=get_alignment(),
                      show_single_page=show_single_page_or_not(),
                      **kwargs
                      )


show.html

โค้ด: เลือกทั้งหมด

 {{ pagination.links }}  <!--แสดงตัวของ  pagination -->
    <!-- วนลูปเพื่อดึงข้อมูลมาแสดง -->
             {% for row in rows %}
             <tr>
                <td align="center">{{ row[0] }}</td>
                <td align="center">{{ row[1] }}</td>
                <td align="center">{{ row[2] }}</td>
                <td align="center">{{ row[3] }}</td>
                <td align="center">{{ row[4] }}</td>
                <!-- สร้างปุ่มเพื่อทำการลบ-->
             </tr>
         {% endfor %} <!-- ปิดลูป-->
    {{ pagination.links }}


อ้างอิง
https://www.mindphp.com/คู่มือ/73-คืออะไร/2417-python-คืออะไร.html

https://www.mindphp.com/forums/viewtopic.php?f=72&t=54216

viewforum.php?f=29
แก้ไขล่าสุดโดย chatee supasand เมื่อ 30/07/2019 7:19 pm, แก้ไขไปแล้ว 1 ครั้ง.
รูปภาพ

ภาพประจำตัวสมาชิก
chatee supasand
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 649
ลงทะเบียนเมื่อ: 04/06/2019 10:06 am

Re: การแบ่งหน้าตาราง Pagination โดยใช้ flask paginate สำหรับคนใช้ Python ทำเว็บ

โพสต์โดย chatee supasand » 30/07/2019 11:57 am

เพิ่มเติม
ถ้าเราต้องการแก้ไข จำนวนแถวของตาราง ให้แสดงตามที่เราต้องการ
เช่น 20 แถว เราจะมาแก้ที่ไฟล์ app.pfg ตามรูปเลยครับ
pg.png
pg.png (18.75 KiB) เปิดดู 113 ครั้ง

ไฟล์ app.pfg จะได้มาตอนเรา import Pagination มาใช้งานนะครับ
pg2.png
pg2.png (9.65 KiB) เปิดดู 113 ครั้ง
รูปภาพ


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 15 และ บุคคลทั่วไป 0 ท่าน