Почему Flask дает мне тот же результат? [Дубликат]

Существует много причин, но, возможно, наиболее важным является то, что эти функции поощряют небезопасные методы программирования, поскольку они не поддерживают подготовленные заявления. Подготовленные утверждения помогают предотвратить атаки SQL-инъекций.

При использовании функций mysql_* вы должны помнить, чтобы запускать параметры, заданные пользователем, через mysql_real_escape_string(). Если вы забудете только в одном месте или если вам удастся избежать только части входа, ваша база данных может подвергаться атаке.

Использование подготовленных операторов в PDO или mysqli сделает так, чтобы эти типы ошибок программирования сложнее сделать.

83
задан Passiday 2 May 2013 в 19:04
поделиться

5 ответов

Текущий рекомендуемый способ (Flask> = 0.11) связан с утилитой командной строки flask.

http://flask.pocoo.org/docs/0.11/server/

Пример:

$ export FLASK_APP=main.py
$ export FLASK_DEBUG=1
$ python -m flask run

или в одной команде:

$ FLASK_APP=main.py FLASK_DEBUG=1 python -m flask run

Я предпочитаю python -m flask run, а не flask run, потому что предыдущий также работает с virtualenv.

Если вам нужен другой порт, чем по умолчанию (5000), добавьте опцию --port.

Пример:

$ python -m flask run --port 8080

Дополнительные опции доступны с помощью:

$ python -m flask run --help
72
ответ дан Eyal Levin 27 August 2018 в 21:52
поделиться

Чтобы достичь этого в PyCharm, установите раздел «Переменные среды» в:

PYTHONUNBUFFERED = 1; FLASK_DEBUG = 1

Для конфигураций запуска / отладки флажков

0
ответ дан blue-sky 27 August 2018 в 21:52
поделиться

В средах тестирования / разработки

Отладчик werkzeug уже имеет функцию автоматического перезапуска, которая может быть включена, выполнив одно из следующих действий:

app.run(debug=True)

или

app.debug = True

Вы также можете использовать отдельный файл конфигурации для управления всеми вашими настройками, если вам нужно. Например, я использую параметр «settings.py» с опцией «DEBUG = True».

Производственная среда

Лично я выбрал Nginx + uWSGI более, чем когда-либо.

app.config.from_object('application.settings')

Однако это не подходит для рабочей среды. Apache + mod_wsgi по нескольким причинам производительности, а также параметры конфигурации. Параметр touch-reload позволяет указать файл / папку, которая заставит приложение uWSGI перезагрузить недавно развернутое фляжное приложение.

Например, ваш скрипт обновления вытаскивает ваш новый изменяется вниз и затрагивает файл reload_me.txt. Очевидно, что ваш скрипт uWSGI ini (который поддерживается Supervisord) имеет эту строку где-то:

touch-reload = '/opt/virtual_environments/application/reload_me.txt'

Надеюсь, это поможет!

31
ответ дан Ewan 27 August 2018 в 21:52
поделиться

Если вы используете uwsgi, посмотрите на параметр автоматической перезагрузки python:

uwsgi --py-autoreload 1

Пример uwsgi-dev-example.ini:

[uwsgi]
socket = 127.0.0.1:5000
master = true
virtualenv = /Users/xxxx/.virtualenvs/sites_env
chdir = /Users/xxx/site_root
module = site_module:register_debug_server()
callable = app
uid = myuser
chmod-socket = 660
log-date = true
workers = 1
py-autoreload = 1

site_root / __ init__ .py

def register_debug_server():
    from werkzeug.debug import DebuggedApplication

    app = Flask(__name__)
    app.debug = True
    app = DebuggedApplication(app, evalex=True)
    return app

Затем запустите:

uwsgi --ini uwsgi-dev-example.ini

Примечание: этот пример также позволяет отладчику.

Я пошел по этому маршруту, чтобы имитировать производство как близко насколько это возможно, с настройкой nginx. Просто запустив приложение для флэков, он встроен в веб-сервер за nginx, это приведет к ошибке с плохим шлюзом.

19
ответ дан Kyle James Walker 27 August 2018 в 21:52
поделиться

Если вы говорите о средах тестирования / dev, просто используйте опцию debug. Он будет автоматически перезагружать флеш-приложение, когда произойдет смена кода.

app.run(debug=True)

Или, из оболочки:

$ export FLASK_DEBUG=1
$ flask run

http: //flask.pocoo .org / Docs / Быстрый старт / # отладочный режим

136
ответ дан Neil 27 August 2018 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: