Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung von Python mithilfe von flask sqlalchemy zur Implementierung von Paging

Ausführliche Erklärung von Python mithilfe von flask sqlalchemy zur Implementierung von Paging

零下一度
零下一度Original
2017-07-16 11:38:122327Durchsuche

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 &#39;<员工{},{},{},{}>&#39;.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(&#39;employeelist.html&#39;, 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn