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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: การแบ่งหน้าตาราง Pagination โดยใช้ flask paginate สำหรับคนใช้ Python ทำเว็บ

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

โดย mindphp » 13/10/2019 11:14 pm

Flask เป็น Framework Python อีกตัวที่ มี Lib ต่างๆ ให้ครบ

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

โดย chatee supasand » 30/07/2019 11:57 am

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

การแบ่งหน้าตาราง 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-คืออะ ... ออะไร.html

viewtopic.php?f=72&t=54216

viewforum.php?f=29

ข้างบน