错误重定向烧瓶中的URL

时间:2017-06-27 08:01:45

标签: python sqlite flask

[已解决] :请阅读以下编辑内容。

我正在尝试构建一个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

编辑:

注意
事实证明,这是一个愚蠢的错误。切勿将功能命名为与任何内置功能相同的功能。

1 个答案:

答案 0 :(得分:1)

将您的函数redirect重命名为其他内容,因为您已从flask中导入redirect。您的函数名称会隐藏您需要的redirect

list通常会犯同样的错误。初学者经常将列表命名为list,这会影响内置函数list,如果他们稍后尝试使用它,则会为它们创建问题。