私のウェブサイトにいくつかの検索機能が必要です。出力ページでは、すべての結果を1ページで取得しています。しかし、私はそれを多数のページ(つまり、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))
私は次の100の結果をしたいように、私は、ブラウザでURLアドレスを編集した場合、私はそれを得ることができ、また、「http://127.0.0.1:5000/my_search/assets?results1=0-100
」 のようなURLに出力したいです"http://127.0.0.1:5000/my_search/assets?results1=100-100
"
注:ここではバックエンドとしてsqliteを使用しています。私の検索結果には「limit_factor
」を使用して結果を制限します。 「query_builder
」と「query_builder_count
」は、複雑なSQLクエリを生成する単純な関数です。
しかし、私が得ているエラーは "NoneType"は分割できません。それは"limit_factor"
に止まった。
ここで限界係数は、私が適用した1つのフィルタに過ぎません。しかし、私はその場所で検索したいと思う、例えば、 "http://127.0.0.1:5000/my_search/assets?results1=0-100&location=asia
"
優れました.. 。その働く.. はい、あなたは正しいです。私はSQLインジェクションに脆弱にしています。私はそれらをすべて置き換えます。しかし今のところ、私は正規表現を使ってすべてのユーザー入力をフィルタリングしています! – namit