Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung von Python mithilfe von flask sqlalchemy zur Implementierung von Paging
Bei der Entwicklung eines Blog-Systems müssen wir eine Liste der Blog-Artikel anzeigen, die der Autor veröffentlicht hat, oder eine Liste der Artikel der Follower des Autors anzeigen. Die Implementierung dieser Funktion ist nicht kompliziert. Sie müssen lediglich die Artikel des angegebenen Autors in der Datenbank herausfiltern, in der die Artikel gespeichert sind, und dann den HTML-Code für die Anzeige rendern.
Diese Methode kann jedoch sinnvoll sein, wenn nicht viele Artikel vorhanden sind. Wenn die Anzahl der Artikel zunimmt, ist es unmöglich, alle Artikel auf einer Seite anzuzeigen. Zu diesem Zeitpunkt müssen Sie die Artikelliste durch Paging anzeigen und auf jeder Seite nur eine bestimmte Anzahl von Artikeln anzeigen.
Wie soll diese Funktion implementiert werden? Eine intuitive Methode, die wir uns vorstellen können, besteht darin, die aus der Datenbank gefilterte Artikelliste zu gruppieren und jeweils nur eine Artikelgruppe anzuzeigen. Zeigen Sie dann die Artikelliste der angegebenen Gruppe entsprechend den Anforderungen des Benutzers an.
Bei Flask-sqlalchemy geht es um Kolben für die Datenbankverwaltung. In diesem Artikel verwenden wir ein Beispiel für die Mitarbeiteranzeige.
Zuerst erstellen wir die SQLALCHEMY-Objektdatenbank.
from flask import Flask, render_template,request from flask_sqlalchemy import SQLAlchemy app = Flask(name,static_url_path='') app.debug = True app.secret_key = "faefasdfaf" app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./db/personal.db' # app的配置,指定数据库路径 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True app.config['SQLALCHEMY_ECHO'] = True db = SQLAlchemy(app)
Dann verwenden wir db, um die Mitarbeitertabelle zu erstellen:
from datetime import datetime class Employee(db.Model): '''员工''' tablename = 'employee' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) gender = db.Column(db.String) job = db.Column(db.String) birthday = db.Column(db.DateTime) idcard = db.Column(db.String) address = db.Column(db.String) salary = db.Column(db.String) release_time = db.Column(db.DateTime) def init(self, name, gender, job, birthday, idcard, address, salary, release_time=None): self.name = name self.gender = gender self.job = job self.birthday = birthday self.idcard = idcard self.address = address self.salary = salary self.release_time = release_time if release_time else datetime.now() def repr(self): return '<员工{},{},{},{}>'.format(self.id, self.name, self.salary, self.address)
Nachdem die Tabelle erstellt wurde, können wir Daten aus der Tabelle abfragen.
from flask import render_template from flask.views import MethodView class EmployeeListView(MethodView): # 获取员工信息 def get(self,page=1): employees = Employee.query.paginate(page,per_page=10) return render_template('employeelist.html', employees=employees)
Oben fragen wir die Mitarbeiterinformationen ab und geben diese dann als Vorlage an die Rezeption weiter. (Wir haben den Flask-Blueprint verwendet, um das Modul in Module zu unterteilen. Angenommen, wir definieren das Obige als Ansicht Funktion als: Mitarbeiterliste)
Hinweis: Paginieren ist In Bei der Paging-Methode ist der erste Parameter die Seitenzahl und der zweite Parameter gibt an, wie viele Elemente auf jeder Seite angezeigt werden. Das auf diese Weise erhaltene Ergebnis ist jedoch keine Liste. Sie müssen dem an die Rezeption übergebenen Wert eine .items-Datei hinzufügen. (Verwendung der Jinja2-Vorlage)
{% für Artikel in Mitarbeiter.items %}
Wie oben gezeigt, benötigen Sie, wenn Sie Jinja2 verwenden, um den Wert zu erhalten Fügen Sie nach dem vom Hintergrund übergebenen Wert .items hinzu.
Um das Paging oben fortzusetzen, müssen wir hier erneut die jinja2-Vorlage verwenden, um eine Methode zum Implementieren der Paging-Funktion zu definieren. Der Name dieser Seite lautet: helper.html.
{% macro render_page_data(page_data,page_function) %} <p class="text-center"> <ul class="page_data"> <li><a href="{{ url_for(page_function,page = 1) }}">首页</a></li> {% if page_data.has_prev %} <li><a href="{{ url_for(page_function,page = page_data.prev_num) }}">«</a></li> {% endif %} {% for page in page_data.iter_pages() %} {% if page %} {% if page !=page_data.page %} <li><a href="{{ url_for(page_function,page = page) }}">{{ page }}</a></li> {% else %} <li class="active"><a href="#">{{ page }}</a></li> {% endif %} {% endif %} {% endfor %} {% if page_data.has_next %} <li><a href="{{ url_for(page_function,page = page_data.next_num) }}">»</a></li> {% endif %} <li><a href="{{ url_for(page_function,page = page_data.pages) }}">末页</a></li> </ul> </p> {% endmacro %}
Oben verwenden wir die Jinja2-Syntax, um eine Verteilungsmethode zu definieren. In dieser Methode übergeben wir zwei Parameter: Bei der ersten handelt es sich um die Daten, die vom Hintergrund übergeben und über DB-Paging abgefragt werden. Die zweite ist die Methode der Daten, die wir abfragen.
Hier muss ein besonderer Hinweis gemacht werden. Es gibt mehrere wichtige Methoden zum Paging von Daten:
has_next: Wenn es mindestens eine gibt Seite nach der aktuellen Seite, Rückgabe True
has_prev: Wenn mindestens eine Seite vor der aktuellen Seite vorhanden ist, Rückgabe True
next_num : nächste Seite Anzahl der Seiten
prev_num: Anzahl der Seiten auf der vorherigen Seite
Nachdem Sie die oben genannten Arbeiten durchgeführt haben, gibt es ist nur noch ein Schritt übrig. Wir müssen die Methode, die wir gerade über Jinja2 definiert haben, auf unserer Vorlagenseite importieren, das heißt, sie in unsere Employeelist.html oben importieren.
{% import 'helper.html' as helper %}
Nach dem Import können wir es dort aufrufen, wo wir es brauchen.
{{ helper.render_pagination(employees,'employee.list') }}
Oben rufen wir die Methode auf, die wir zuvor definiert haben. Der erste Parameter ist der Wert, den wir vom Hintergrund übergeben haben, und der zweite ist die Ansichtsfunktion im Hintergrund.
Nachdem wir die oben genannten Vorgänge ausgeführt haben, sind wir fertig.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird, und ich hoffe auch, dass jeder Script House unterstützt.
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung von Python mithilfe von flask sqlalchemy zur Implementierung von Paging. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!