2016-12-16 8 views
0

url_for Unable to open files in python flask- 404 not foundに関する質問が1つあります。重複してマークされた。url_forを使用して、出力フォルダ内のExcelファイルへのリンクを作成します。

私の要件は非常に簡単です。メインページにhrefリンクを作成して出力フォルダのファイルを指定するには私は答えがほとんど私のために働いていないようだので、ほとんどすべてのスレッドを試しました。私は非常にPythonの新しいです。助けてください。以下は、私はあなたのアプリケーションのディレクトリ構造は非常にこのコードは動作します。このようにする必要があり

from flask import Flask, redirect, url_for,send_from_directory 
    app = Flask(__name__)  

    @app.route('/main') 
    def index(): 
     print 'test' 
     return '''<a href="{{ url_for('uploaded_file', filename='a.txt') }}">Open file</a>''' 

    @app.route('/out/<filename>') 
    def uploaded_file(filename): 
     print filename 
     return send_from_directory('./out/', 
            filename) 
    @app.route('/out/<filename>') 
    def uploaded_file2(filename): 
     print filename 
     return './out/'+filename 

    if __name__ == '__main__': 
     app.run(debug = True) 

答えて

0

を試してみましたが、サンプルコードです。ファイル名がアウトフォルダーに見つからなかった場合、「URLが見つかりません」と表示されます:

app/ 
    app.py 
    static/ 
     out/ 
      a.txt 
    templates/ 
    index.html 

from flask import Flask, render_template, redirect, url_for,send_from_directory 

app = Flask(__name__) 

app.config.update(
     UPLOAD_FOLDER = "static/out/" 
) 

@app.route('/main') 
def index(): 
    print ('test') 
    return render_template('index.html') 

@app.route('/out/<filename>') 
def uploaded_file(filename): 
    print (filename) 
    return send_from_directory(app.config["UPLOAD_FOLDER"], filename) 

@app.route('/showfilepath/<filename>') 
def uploaded_file2(filename): 
    print (filename) 
    return app.config["UPLOAD_FOLDER"] + filename 

if __name__ == '__main__': 
    app.run(debug = True) 

# index.html 
<a href="{{url_for('uploaded_file', filename='a.txt')}}">open file</a> 

# a.txt 
hey there ... 
+0

ありがとうございます!出来た。しかし、Index.htmlの内容が 'code'@app.route( '/ main')のように戻り値に直接置かれていれば動作しません。 def index(): print( 'test') return ' 'open file' '' #return render_template( 'index.html') 'code' – kten

+0

また、hrefタグをパラメータとして完全に渡すことは可能ですか? htmlは、私が試したときにそのまま書かれています。 – kten

+0

それを得ました! {{variable | safe}}を使ってパラメータ内のhtmlを受け入れることができます。安全なキーワードはhtmlタグを許可する – kten

関連する問題