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

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

ただいまの
回答率

90.47%

  • Python

    8621questions

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

  • Python 3.x

    6918questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Flask

    229questions

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

Flaskにおいて、"View function did not return a response"と表示されてしまう。

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,207

Shinog

score 104

はじめまして。
現在以下の記事を参考に、Flaskを用いてinstagramユーザーの性別を推定しようと試みているのですが、エラーが出てしまいます。
http://codezine.jp/article/detail/8953

#エラー文
Traceback (most recent call last)
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "/Users/Ryosuke/anaconda/lib/python3.5/site-packages/flask/app.py", line 1566, in make_response
raise ValueError('View function did not return a response')
ValueError: View function did not return a response

実際過去に私と同じようなエラーを発生している事例(http://stackoverflow.com/questions/25034123/flask-value-error-view-function-did-not-return-a-response)を見つけ、関数の最後にreturnを明示しなければならないことは分かったのですが、今回のコードではどこにreturnを明記してやればいいのか分かりません。

今回の場合、以下main.pyのどこにreturnを明記してやればよいでしょうか?
是非ともご教示のほどよろしくお願い致します。

#main.py
import os
from flask import Flask, render_template, request
from settings import instgram_access_token
from api import InstagramAPI
import pandas as pd
from sklearn.externals import joblib

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    try:
        if request.method == 'POST': # POST応答
            if request.form['message'] == '': #例外処理:ユーザー名未入力時
                message = "Please input your Instagram User name in the box"
                return render_template('index.html', title="Your gender?", method=request.method, message=message)
            else:
                message = "Your Instagram data"
                insta = InstagramAPI(access_token=instgram_access_token)
                user_name = request.form['message'] # ユーザー名を変数に代入
                user_id = insta.user_id(user_name=user_name) # ユーザー名からユーザーIDを取得
                profile_image = insta.profile_image(user_id) # プロフィール画像を取得
                user = {'user_name': user_name, 'user_id': user_id, 'image': profile_image} # ユーザー情報をまとめる
                user_summary = insta.user_info(user=user)
                # 特徴量ベクトルの整理
                test = {'nail': 0, 'hair': 0, 'person': 0, 'sport': 0, 'food': 0, 'night': 0, 'coffee': 0,
                        'wedding': 0, 'cake': 0, 'beer': 0, 'dog': 0, 'animal': 0, 'tree': 0, 'blossom': 0,
                        'cat': 0, 'flower': 0, 'sky': 0, 'nature': 0, 'cherry': 0, "user_name": "test", "user_id": "test"}
                X = pd.DataFrame([user_summary, test]).fillna(0)
                X['animal'] = X['animal']+X['dog']+X['cat']
                X['cosme'] = X['hair']+X['nail']
                X['nature'] = X['nature']+X['sky']+X['flower']+X['tree']+X['blossom']+X['cherry']
                X = X[X['user_name'] == user_name]
                X = X[['person', 'sport', 'food', 'night', 'coffee', 'wedding', 'cake', 'beer', 'animal', 'nature', 'cosme']]
                user_vec = X.values.tolist()[0]

                model_path = os.path.join(os.path.dirname(__file__), "clf/clf.pkl")
                clf = joblib.load(model_path) # 識別器の読み込み
                result = clf.predict(user_vec) # 性別推定

                return render_template('index.html', title="Your gender?", method=request.method, userinfo=user_summary, result=result, message=message)
        else: # GET応答
            return render_template('index.html', title="Your gender?", method=request.method)

    except Exception as e:
        print(e)


if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(debug=True, port=port, host='IPアドレス省略')

(参考)
全体のソースコードは以下になります。
https://github.com/yiori-s/fit_instagram_gender/tree/codezine

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

なんかの例外が発生してて、
except に入ってる可能性はないですかね。
print(e)しかしてないので、そしたらresponse を return してない、という状態になりそう……

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    8621questions

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

  • Python 3.x

    6918questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Flask

    229questions

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