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

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

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

User avatar
chatee supasand
PHP Super Hero Member
PHP Super Hero Member
Posts: 991
Joined: 04/06/2019 10:06 am

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

Postby chatee supasand » 05/07/2019 11:34 am

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

Code: Select all

from flask_paginate import Pagination, get_page_args


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

Code: Select all

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

Code: Select all

 {{ 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
Last edited by chatee supasand on 30/07/2019 7:19 pm, edited 1 time in total.
Image

User avatar
chatee supasand
PHP Super Hero Member
PHP Super Hero Member
Posts: 991
Joined: 04/06/2019 10:06 am

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

Postby chatee supasand » 30/07/2019 11:57 am

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

ไฟล์ app.pfg จะได้มาตอนเรา import Pagination มาใช้งานนะครับ
pg2.png
pg2.png (9.65 KiB) Viewed 397 times
Image

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22149
Joined: 22/09/2008 6:18 pm
Contact:

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

Postby mindphp » 13/10/2019 11:14 pm

Flask เป็น Framework Python อีกตัวที่ มี Lib ต่างๆ ให้ครบ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042


Return to “Python Knowledge”

Who is online

Users browsing this forum: No registered users and 29 guests