Deseo tener alguna función de búsqueda en mi sitio web. En la página de salida, obtengo todos los resultados en una sola página. Sin embargo, quiero distribuirlo a muchas páginas (es decir, 100 búsquedas/página). Para eso, estoy pasando una serie de búsquedas predeterminadas en "urlfor" pero no está funcionando. Sé que estoy cometiendo un pequeño error, pero no lo estoy captando.Administración de parámetros de URL (Python Flask)
Aquí está mi código de abajo:
@app.route('/', methods=['GET', 'POST'])
def doSearch():
entries=None
error=None
if request.method=='POST':
if request.form['labelname']:
return redirect(url_for('show_results',results1='0-100', labelname=request.form['labelname']))
else:
error='Please enter any label to do search'
return render_template('index.html',entries=entries, error=error)
@app.route('/my_search/<labelname>')
def show_results(labelname=None, resultcount=None, results1=None):
if not session.get('user_id'):
flash('You need to log-in to do any search!')
return redirect(url_for('login'))
else:
time1=time()
if resultcount is None:
total_count=g.db.execute(query_builder_count(tablename='my_data',nametomatch=labelname, isextension=True)).fetchall()[0][0]
limit_factor=" limit %s ,%s"%(results1.split('-')[0],results1.split('-')[1])
nk1=g.db.execute(query_builder(tablename='my_data',nametomatch=labelname, isextension=True) + limit_factor)
time2=time()
entries=[]
maxx_count=None
for rows in nk1:
if maxx_count is None:
maxx_count=int(rows[0])
entries.append({"xmlname":rows[1],'xmlid':rows[2],"labeltext":rows[12]})
return render_template('output.html', labelname=labelname,entries=entries, resultcount=total_count, time1=time2-time1, current_output=len(entries))
aquí quiero salida en la URL como "http://127.0.0.1:5000/my_search/assets?results1=0-100
" Además, si puedo editar la dirección URL en el navegador como que quieren que el próximo 100 resultado puedo conseguirlo en "http://127.0.0.1:5000/my_search/assets?results1=100-100
"
Nota: aquí estoy usando sqlite como back-end; entonces usaré "limit_factor
" en mis consultas para limitar mis resultados. Y "query_builder
" y "query_builder_count
" son solo funciones simples que generan consultas SQL complejas.
pero el error que obtengo es "NoneType" no puede haberse dividido. Se detuvo en "limit_factor"
.
Aquí el factor de límite es solo un filtro que he aplicado; pero quiero aplicar más filtros, por ejemplo, quiero buscar por su ubicación "http://127.0.0.1:5000/my_search/assets?results1=0-100&location=asia
"
Excelente .. . esta funcionando.. . y sí, tienes razón; Lo estoy haciendo vulnerable a la inyección de SQL; los reemplazaré a todos; pero a partir de ahora, estoy usando regex para filtrar todas las entradas de usuario !!! – namit