Im Wesentlichen versuche ich, die Notwendigkeit zu beseitigen, die ID einer 'Auflistung' für den Benutzer anzuzeigen. Ich verwende Hashids, um die automatisch erstellte ID als eindeutigen Code zu codieren.Codierungs-ID und speichern Sie es als eindeutigen Code und speichern in Tabelle bei der Erstellung der Zeile
einen einzigen Eintrag anzuzeigen, ich habe dies zur Zeit getan:
@app.route('/listing/<uniqueHash>')
def listing(uniqueHash):
a = hashids.decode(uniqueHash)
listing = models.Listing.select().where(models.Listing.id == a).get()
uniqueHash = hashids.encode(listing.id)
return render_template("test1.html", listing = listing, uniqueHash = uniqueHash)
und das funktioniert für einen einzelnen Eintrag in Ordnung. Allerdings, wenn ich mehrere Angebote wie diese angezeigt werden wollte:
@app.route('/')
def index():
listings = models.Listing.select().limit(100)
return render_template("test.html", listings = listings)
Ich kann nicht liefern die eindeutige ID für jeden Eintrag der jinja2 Vorlage (und sehen nicht, einen Weg zu kodieren/dekodieren ids in der jinja template selbst ... ist da?)
Ich möchte schließlich den eindeutigen Code in der Datenbank speichern, bin aber verwirrt, wie man das Hash - basierend auf der ID des Eintrags erstellt - wenn ich ' Ich erstelle dieses Listing selbst und kenne die ID nicht.
Ich bin gerade dabei einen Eintrag wie folgt aus:
form = request.form
models.Listing.create(
title = form['title'],
description = form['description'],
price = form['price']
)
ich später diese für die Validierung mit WTForms nutzen möchten bin.
Wie kann ich den eindeutigen Code in die Erstellung eines Eintrags einfügen, ohne die ID selbst zu kennen ???
Jede Hilfe wird sehr geschätzt !!!
Ich denke, Sie sind für Ihre Modelle peewee mit? Wenn peewee klassenbasierte Modelle unterstützt, können Sie eine Funktion/Eigenschaft für die Hash-ID im Modell selbst verwenden. Sonst kannst du auch Funktionen in die Jinja-Vorlage einfügen, denke ich. – syntonym