[已解决] :请阅读以下编辑内容。
我正在尝试构建一个URL缩短程序,但是在将用户重定向到较长的URL时出错。我使用SQLite作为数据库。 这是我的重定向代码:
@app.route('/<short_url>')
def redirect(short_url):
conn = sqlite3.connect('url.db')
cursor = conn.cursor()
result_cur = cursor.execute("SELECT URL FROM WEB_URL WHERE S_URL = ?;" ,(short_url,) )
try:
redirect_url = result_cur.fetchone()[0]
print redirect_url
conn.close()
return redirect(redirect_url , code = 200)
except Exception as e:
error = e
return render_template('index.html' , error = error)
fetchone()[0]
会返回正确的长网址,但点击生成的短网址后,我收到此错误
'NoneType' object has no attribute '__getitem__'
不应该有NoneError
,因为我从数据库中获取了一个值。
这是该项目的github链接:
https://github.com/PadamSethia/shorty
编辑:
注意
事实证明,这是一个愚蠢的错误。切勿将功能命名为与任何内置功能相同的功能。
答案 0 :(得分:1)
将您的函数redirect
重命名为其他内容,因为您已从flask中导入redirect
。您的函数名称会隐藏您需要的redirect
。
list
通常会犯同样的错误。初学者经常将列表命名为list
,这会影响内置函数list
,如果他们稍后尝试使用它,则会为它们创建问题。