本質的に、私はユーザーに「リスティング」のIDを示す必要性を排除しようとしています。私はHashidsを使用して、自動的に作成されたIDを一意のコードとしてエンコードしています。 IDをエンコードして一意のコードとして格納し、行の作成時にテーブルに格納します
は、私は現在、これをやってきた、単一のリストを表示するには:@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)
、これは、単一のリストについては、正常に動作します。私はこのような複数のリストを表示したい場合は、:
@app.route('/')
def index():
listings = models.Listing.select().limit(100)
return render_template("test.html", listings = listings)
私はその後、Jinja2のテンプレートに上場ごとに固有のIDを提供することはできません(と中/デコードのIDをエンコードする方法が表示されませんjinjaテンプレート自体はありますか?)
私は最終的にはデータベースに一意のコードを保存したいと思いますが、リストのIDを基にしてハッシュコードを作成する方法については混乱しています。そのリスティング自体を作成し、IDを知らない。
私は現在、このようなリストを作成しています:
form = request.form
models.Listing.create(
title = form['title'],
description = form['description'],
price = form['price']
)
私は、検証のためのWTFormsでこれを使用するために、後に計画しています。
ID自体を知らなくても、リスティングの作成に一意のコードを含めることをおすすめしますか?
何か助力が大変ありがとうございます。マッチングhashidを返すために今
def getHashId(self):
return hashid.encode(self.id)
、どこでもあなたがListing
のインスタンスを使用しているあなたのJinja2のテンプレートでは、あなたがlisting.getHashId()
を呼び出すことができます。あなたのListing
モデル内
? peeweeがクラスベースのモデルをサポートしている場合は、モデル自体のハッシュidに関数/プロパティを使用できます。それ以外の場合は、私が考えるジンジャーテンプレートに関数を挿入することもできます。 – syntonym