我正在学习尝试学习python flask + redis,然后我正在做一个基本的应用程序,我可以用答案提出问题,之后有人可以给我一个问题的答案,并且工作,但我希望打印提出所有问题,但是我没有得到这些问题,尝试进行for循环但是没有用,然后我尝试使用r.lrange
,但它对我不起作用,也许有人可以解释它是怎样的&# #39;工作,看这是我的
的 Router.py
r = redis.StrictRedis(host='localhost',port=6379,db=0, charset="utf-8", decode_responses=True);
# Alternativas
# r = redis.StrictRedis();
# r = redis.StrictRedis('localhost',6379,0);
# Server/
@app.route('/')
def hello():
crearLink = "<a href='" + url_for('crear') + "'>Hacer una pregunta</a>";
return """<html>
<head>
<title>Hola, Mundo!</title>
</head>
<body>
""" + crearLink +"""
</body>
</html>""";
# Server/crear
@app.route('/crear', methods=['GET', 'POST'])
def crear():
if request.method == 'GET':
# enviar el formulario al usuario
return render_template('CreateQuestion.html');
elif request.method == 'POST':
# leer la informacion del form y guardarla
titulo = request.form['titulo'];
pregunta = request.form['pregunta'];
respuesta = request.form['respuesta'];
# Guardar informacion
# Key name
r.set(titulo +':pregunta', pregunta);
r.set(titulo +':respuesta', respuesta);
return render_template('CreatedQuestion.html', pregunta = pregunta);
else:
return "<h2>Error</h2>";
def preguntas():
preguntass = r.lrange('pregunta','0','4')
print preguntass;
# server/pregunta/<title>
@app.route('/pregunta/<titulo>', methods=['GET', 'POST'])
def pregunta(titulo):
if request.method == 'GET':
# Leer la pregunta de la base de datos
pregunta = r.get(titulo+':pregunta')
return render_template('AnswerQuestion.html', pregunta = pregunta);
elif request.method == 'POST':
submittedAnswer = request.form['submittedAnswer'];
if submittedAnswer == '':
return "No ingresastes ninguna clase de informacion para validar.";
respuesta = r.get(titulo+':respuesta')
if submittedAnswer == respuesta:
return render_template('Correct.html');
else:
return render_template('Incorrect.html', submittedAnswer = submittedAnswer, respuesta = respuesta);
else:
return '<h2>Error</h2>';
答案 0 :(得分:-1)
您可以使用r.keys()
获取当前redis数据库中所有密钥的列表。
r.keys()
还会采用可选模式来匹配键。
因此,您可以使用r.keys("*:pregunta")
来匹配所有问题。
此外,线端分号是非常不必要的。