📖

Djangoの__init__.pyで、URL指定してもreturnが返ってこなかった話

2022/12/16に公開

現象

Djangoでアプリ開発をしていアプリ開発をしており、下記のようにエンドポイントを指定しているにもかかわらず、curl http://127.0.0.1:5000/search で404が返された。

@app.route("/search", methods=['GET'])
def search_question():
    result = jsonify(
        {
            "search":"search"
        }
    )
    return result

原因

下記のように、create_app関数内でエンドポイントを指定するが、末行のreturn appの外で@app.routeを指定していたことが原因だった。。単純な記載場所ミス

def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__)
    setup_db(app)
    CORS(app)

    @app.route("***")
    def ***():
        return response

    @app.route("***")
    def ***():
        return response

    return app

解決方法

上記のように、return app前で記載したところ、エラー解消した。

Discussion