私はFlaskを使ってよりよく理解しています。私は大きなデータベースを照会し、ランダムな要素を返す単純なアプリケーションを持っています。次のコードは動作しませんが、どこが失敗するのかは正確に分かります。私はrandom.randint()を使ってリスト内のランダムな要素を取得できますが、失敗します。しかし、ログにエラーは表示されませんが、これの根本的な原因は何ですか?私はランダムなintの代わりにハードコードされた値を使用する場合に動作します。私はそれをテストするためにカールを使用します。私は正しいと思われるデータベースコードをスナップしました。Flaskのrandom.randintの使用
from flask import Flask, render_template, request
import sqlite3
import random
app = Flask(__name__)
def show_home_page():
return render_template("home.html")
def get_random_element():
# <snipped>: Do some sql queries and populate a list called P_LIST
r = random.randint(0, len(P_LIST)) # This line silently fails.
r_e = P_LIST[r] # Never seems to get here
print "get_random_element", r_e # Never prints this line!!
return r_e
@app.route('/')
def server():
return show_home_page()
@app.route('/element', methods=['POST', 'GET'])
def random():
if request.method == 'GET':
p = request.args.get('q', '')
print "Request:", p
if p == 'random' or p == '':
p = get_random_element()
print "Random element:", p
else:
print "Else:", p
return render_template('random.html', element=p)
return show_home_page()
if __name__ == '__main__':
app.run()
[documentation](https://docs.python.org/3/library/random.html#random.randint)の 'random.randint'を確認してください。あなたが思っていると思われることはしません。 – user2357112
Didnt get it .. "乱数Nを返すと、<= N <= b。randrange(a、b + 1)のエイリアス"というメッセージが返されます。それは私がしたいことです。私は私のリスト(P_LIST)にランダムなインデックスを探しています。だからrandom.randint(0、len(P_LIST))。 – user3079275
あなたのリストに有効なインデックスは何ですか? 'random.randint(0、len(P_LIST))'の可能な出力は何ですか?矛盾があります。 – user2357112