我正在学习flask,我已经构建了我的第一个应用程序--为了更进一步,我决定托管它。
虽然这个应用程序在我的PC上运行得很好-但它在服务器上崩溃了,但只传递了一些特定的参数(它适用于大多数表单输入):
例如,对于大多数发布的值,应用程序返回适当的数据帧,但对于一些(我尝试了50和2,将代码从应用程序返回不完整的响应)
下面是两个相关的app.routes:
@app.route("/searchcharacter", methods=["POST", "GET"])
def charactersearch():
if request.method == "POST":
character_name = request.form["nm"]
character_name = character_name.replace("%20", " ")
print(character_name)
return redirect(url_for("character_found", character=character_name))
else:
return render_template("searchcharacter.html")
@app.route("/<character>/")
def character_found(character):
character = character.replace("%20", " ")
print("Character right before query: " + character)
df_character = pd.read_sql("""SELECT * FROM auction_history where character_name = %(character)s"""
, con=db_connection,params={'character': character})
df = df_character[['character_name','auction_start','auction_end','win_lose','minimum_bid','winning_bid','level','vocation',
'sex','server','axe_fighting','sword_fighting','club_fighting','dist_fighting','fishing', 'magic_level','shielding']]
df.columns = ['Name', 'Auction Start', 'Auction End', 'Auction Successful?', 'Min Bid', 'Winning Bid', 'Level', 'Vocation', 'Sex',
'Server', 'Axe', 'Sword', 'Club', 'Distance', 'Fishing', 'Magic Level', 'Shielding']
df['Auction Successful?'] = df['Auction Successful?'].replace([1],'Yes')
df['Auction Successful?'] = df['Auction Successful?'].replace([0],'No')
print(df_character)
if df_character.empty:
return render_template("characternotfound.html", character=character)
else:
return render_template("characterfound.html", character=character, tables=[df.to_html(classes='data')], titles=df.columns.values)我已经看过了所有我能想到的东西...但我不明白为什么它对某些输入有效,而对其他输入无效。输入不起作用的例子: Chamstwa nie zniese,Bourk The sioless
有效的例子: Mac Nekro,Japatrocinador Roleta,Tirinha Malfada
如果对此有帮助,webiste已经托管并运行于:http://tanalyst.pl/searchcharacter
我真的很感谢任何人的帮助。这让我头疼:)我试着查看日志,结果发现对于不工作的输入,flask没有正确重定向?
我还能看什么?看起来不工作的get请求给出了502个html响应
提前谢谢你,
发布于 2021-01-05 04:31:46
这可能是服务器中的一些奇怪的重写规则,因为与此无关的urls被匹配并给出相同的错误。例如http://tanalyst.pl/a/%20n/a/
实际上,任何包含“a-z%任意两个数字”或“%任意两个数字n”或“%任意两个数字n”的路径都会失败。
可能是flask中的其他@app.route("url-selector")函数干扰了
/<character>/可能太过笼统,可能会一网打尽。也许你应该把它改成/results/<character>
https://stackoverflow.com/questions/65555426
复制相似问题