回答編集履歴

1

追記

2022/09/28 09:53

投稿

quickquip
quickquip

スコア11040

test CHANGED
@@ -4,5 +4,20 @@
4
4
  ```
5
5
  resp = "this is a test",
6
6
  ```
7
- とすると同じメッセージ(`TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a tuple.`)のエラーが再現します。
7
+ とすると同じメッセージ(TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a tuple.)のエラーが再現します。
8
8
 
9
+ ----
10
+
11
+ [https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py)
12
+ エラーが出ているのは[ここ](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2163)です。
13
+ その[上](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2112)で、渡されたものが3値のタプルだったら[ここ](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2117)でタプルの1番目の要素が`rv`に再代入されてます。
14
+ その再代入された`rv`がタプルだと2141行から始まるif文のチェックに引っかからず、[ここ](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2167)で返された3値タプルの1つ目の型がタプルだと判明します。
15
+ The view function did not return a valid response. The return type must be a string, dict, list, tuple with headers or status, Response instance, or WSGI callable, but it was a **tuple**. になりますから。
16
+
17
+ そのように仮定すると、
18
+
19
+ > ステータスコードかヘッダーのいずれかか両方を含めてくださいというエラーがでたので、
20
+
21
+ とつじつまが合います。[ここ](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2112)が真で、[ここ](https://github.com/pallets/flask/blob/2.2.2/src/flask/app.py#L2127)に突入したはずで、この
22
+ The tuple must have the form (body, status, headers), (body, status), or (body, headers).
23
+ のエラーのことを言っているんだろうと推測されるからです。