ich mit Flask spielte es besser zu verstehen. Ich habe eine einfache App, die eine große Datenbank abfragt und ein zufälliges Element zurückgibt. Der folgende Code funktioniert nicht, aber ich weiß genau, wo er fehlschlägt. Es schlägt fehl, wenn ich random.randint() ein zufälliges Element in der Liste erhalten kann. In meinen Protokollen wird jedoch kein Fehler angezeigt. Was ist die Ursache dafür? Es funktioniert, wenn ich einen hardcoded Wert anstelle eines zufälligen Int. Benutze. Ich benutze Curl, um es zu testen. Ich schnippte den Datenbankcode, wie es scheint, richtig zu sein.Verwendung von random.randint in Flask
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()
Überprüfen Sie die [Dokumentation] (https://docs.python.org/3/library/random.html#random.randint) für 'random.randint'. Es tut nicht, was Sie zu tun scheinen. – user2357112
Didnt bekommen es .. Der Doc sagt: "Gibt eine zufällige ganze Zahl N, so dass a <= N <= b. Alias für Randrange (a, b + 1)." Das ist was ich will .. Ich suche nach einem zufälligen Index in meiner Liste (P_LIST). Also random.randint (0, len (P_LIST)). – user3079275
Was sind die gültigen Indizes für Ihre Liste? Was sind die möglichen Ausgaben von 'random.randint (0, len (P_LIST))'? Es gibt eine Diskrepanz. – user2357112