2017-06-27 1 views
-1

[解決済み]:以下の編集をお読みください。フラスコ内のURLのリダイレクト

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]が正しい長いURLを返しますが、私はこのエラーを取得しています生成された短いURLをクリックすることでん

'NoneType' object has no attribute '__getitem__' 

NoneError理由があるべきではありません私はdbから価値を得ています。

ここではプロジェクトのgithubのリンクがあります:

https://github.com/PadamSethia/shorty

EDIT:

NOTE
は、それは愚かな間違いだった、が判明します。どのような組み込み関数の関数とも同じ名前をつけないでください。

+0

しかし、このエラーは、 'fetchone()'の結果が実際に 'None'であることを暗示しているようです。あなたは結果をチェックしましたか? – Leonard2

+0

エラー行番号 –

+0

@ Leonard2のトレースバックを確認してください。はい、長いURLから長いURLを取得しています。 –

答えて

1

フラスコからredirectをインポートしているので、redirectの名前を変更してください。あなたの関数名は、あなたが必要とするredirectを隠しています。

通常、同じ실수はlistで行われます。初心者は組み込み関数listを陰にしているlistという名前のリストをよく使用します。後で使用しようとすると問題が発生します。

関連する問題