Внутренняя ошибка сервера при запуске приложения Flask - PullRequest
2 голосов
/ 11 июля 2019

Очень ценю вашу помощь!Я новичок в Flask, играю с ним для создания API.

При выполнении приведенного ниже фрагмента кода и запуске кода в терминале vs-code приложение запускается на http://127.0.0.1:5000/.

Однако при переходе по URL-адресув терминале - чтобы запустить URL в браузере и ожидать появления «Hello World» - на странице отобразится «Internal Server Error».Затем он печатает «ОШИБКА в приложении: исключение на / [GET].

Код:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    print('Hello World!')

app.run(port=5000)

Терминал:

WKMGB0671549:REST-APIs josshepp$ python3 app_copy.py
 * Serving Flask app "app_copy" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Hello World!
[2019-07-11 08:51:50,920] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
    return self.finalize_request(rv)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1967, in finalize_request
    response = self.make_response(rv)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 2097, in make_response
    "The view function did not return a valid response. The"
TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
127.0.0.1 - - [11/Jul/2019 08:51:50] "GET / HTTP/1.1" 500 -

1 Ответ

2 голосов
/ 11 июля 2019

Ваша функция просмотра не возвращает правильный ответ.Короче, верните "Hello World!"вместо его печати:

@app.route('/')
def home():
    return 'Hello World!'

Flask автоматически преобразует для вас несколько типов возвращаемых значений в Response, но вы можете прочитать, как они преобразуются ( ссылка ):

Возвращаемое значение из функции просмотра автоматически преобразуется в объект ответа для вас.Если возвращаемое значение является строкой, оно преобразуется в объект ответа со строкой в ​​качестве тела ответа, кодом состояния 200 OK и mimetype text / html.

Если функция представления термина вводит в заблуждение, онаколба описывается как ( ссылка ):

Функция представления - это код, который вы пишете для ответа на запросы к вашему приложению.Flask использует шаблоны для сопоставления URL-адреса входящего запроса с представлением, которое должно его обрабатывать.Представление возвращает данные, которые Flask превращает в исходящий ответ.

...