質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

PyCharm

エディター・開発ツール

Q&A

解決済

2回答

4626閲覧

複数の関数を返したい

Majespy

総合スコア22

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2018/10/06 17:35

編集2018/10/07 10:32

前提・実現したいこと

Python(Flask)を使い、Webサイト上でExcelファイルのダウンロード、画像ファイルの表示をさせたいです。
return文に直接タグを入れない方法を考え、タグを関数で小分けしそれを呼び出す方法をとることにしました。

発生している問題・エラーメッセージ

return文に「直接タグを入れる」または「関数を一つ返す」場合は上手くいくのですが、関数を二つ返すと下記のエラーが出力されます。

このページは動作していません 127.0.0.1 からデータが送信されませんでした。 ERR_EMPTY_RESPONSE

該当のソースコード

Python

1from flask import Flask, send_from_directory 2app = Flask(__name__) 3 4@app.route("/") 5def file_download(): 6 #return (r"<a href='\downloads\test.xlsx' download='test.xlsx'>Excelテンプレート-ダウンロード</a>" 7 # r"<img src='\downloads\graph.png' alt='グラフ' title='GRAPH'>") --- 成功 8 #return html_download() --- 成功 9 #return html_graph() --- 成功 10 #return html_download(), html_graph() --- 失敗 11 #return (html_download(), html_graph()) --- 失敗 12 13@app.route('/downloads/<path:filename>') 14def download_file(filename): 15 return send_from_directory('downloads', 16 filename, as_attachment=True) 17 18def html_download(): 19 html = r"<a href='\downloads\test.xlsx' download='test.xlsx'>Excelテンプレート-ダウンロード</a>" 20 return html 21 22def html_graph(): 23 html = r"<img src='\downloads\graph.png' alt='グラフ' title='GRAPH'>" 24 return html 25 26if __name__ == "__main__": 27 app.run(port=8000, debug=True)

試したこと

html_download関数とhtml_graph関数で同じ変数名を使用しているのが原因かと考え、html_d,html_gに変更しましたが問題は解消されませんでした。

環境

開発環境:PyCharm
サーバ :localhost
ブラウザ:Chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

文字列なので+で繋ぐ必要があります。

@app.route("/") def file_download(): #return ("<a href='/downloads/test.xlsx' download='test.xlsx'>Excelテンプレート-ダウンロード</a>" # "<img src='/downloads/graph.png' alt='グラフ' title='GRAPH'>") --- 成功 #return html_download() --- 成功 #return html_graph() --- 成功 #return html_download() + html_graph() --- 変更

なお、URLのディレクトリの区切りは''ではなく'/'を使わないとlinuxでエラーになります。

投稿2018/10/07 23:43

YasuhiroNiji

総合スコア584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Majespy

2018/10/08 03:29

ご回答ありがとうございます。 上記の内容で修正したところ、動作確認できました。 文字列を返す関数を+で連結する発想はありませんでした。
guest

0

Python

1return (html_download(), html_graph())

上記のように丸カッコで囲ってタプルで返せば良いと思います。

投稿2018/10/07 00:31

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Majespy

2018/10/07 02:57

ご回答ありがとうございます。 上記の内容で修正してみましたが、「このページは動作していません」と表示され問題は解消されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問