我想在我的网站上使用一些搜索功能。在输出页面中,我获得了单页中的所有结果。但是,我想将其分发到多个页面(即100个搜索/页面)。为此,我在“urlfor”中传递了一些默认搜索,但它不起作用。我知道我犯了一个小错误,但我没有抓住它。管理URL的参数(Python Flask)
这里是我下面的代码:
@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))
在这里,我想对URL输出像“http://127.0.0.1:5000/my_search/assets?results1=0-100
” 另外,如果我在浏览器中编辑URL地址就像我希望在未来100结果我能得到它on“http://127.0.0.1:5000/my_search/assets?results1=100-100
”
注意:这里我使用sqlite作为后端;所以我会在我的查询中使用“limit_factor
”来限制我的结果。而“query_builder
”和“query_builder_count
”只是生成复杂sql查询的简单函数。
但我得到的错误是“NoneType”不能拆分。它停在"limit_factor"
。
这里限制因子只是我应用的一个过滤器;但我想申请更多的过滤器,例如我想通过它的位置搜索“http://127.0.0.1:5000/my_search/assets?results1=0-100&location=asia
”
优秀.. 。其工作..。 是的,你是对的;我正在使它容易受到SQL注入的影响,我将替换所有这些;但截至目前,我正在使用正则表达式来过滤所有的用户输入! – namit