Вы можете использовать default()
для обратной совместимости.
- file:
path: "{{ item.name | default(item) }}"
mode: "{{ item.mode | default(omit) }}"
state: directory
with_items: your_list
Если item
имеет свойство name
, используйте его, иначе просто используйте сам элемент.
То же самое касается всех других свойств, которые могут быть у вас в вашем dict. Специальная переменная omit
опускает всю задачу из задачи, как если бы модуль не был передан никакому модулю file
. Конечно, вы можете установить любое другое значение по умолчанию.
Ссылки на документацию:
По моему опыту, шаблоны даже не требуют перезапуска приложения для обновления, поскольку они должны загружаться с диска каждый раз, когда вызывается render_template()
. Возможно, ваши шаблоны используются по-разному.
Чтобы перезагрузить приложение при изменении шаблонов (или любого другого файла), вы можете передать аргумент extra_files
в Flask().run()
, коллекцию имен файлов, чтобы посмотреть: любое изменение этих файлов вызовет перезагрузку.
Пример:
from os import path
extra_dirs = ['directory/to/watch',]
extra_files = extra_dirs[:]
for extra_dir in extra_dirs:
for dirname, dirs, files in os.walk(extra_dir):
for filename in files:
filename = path.join(dirname, filename)
if path.isfile(filename):
extra_files.append(filename)
app.run(extra_files=extra_files)
См. здесь: http://werkzeug.pocoo.org/docs/0.10/serving /?highlight=run_simple#werkzeug.serving.run_simple
На самом деле для меня TEMPLATES_AUTO_RELOAD = True
не работает (версия 0.12). Я использую jinja2 и то, что я сделал:
before_request
def before_request():
app.jinja_env.cache = {}
app.before_request(before_request)
Использование последней версии Flask в Windows с использованием команды run и debug, установленной в true; Флажок не требует сброса для внесения изменений в шаблоны. Попробуйте Shift + F5 (или Shift + кнопка перезагрузки), чтобы убедиться, что ничего не кэшировано.
Что сработало для меня, просто добавьте это:
@app.before_request
def before_request():
# When you import jinja2 macros, they get cached which is annoying for local
# development, so wipe the cache every request.
if 'localhost' in request.host_url or '0.0.0.0' in request.host_url:
app.jinja_env.cache = {}
(, взятый из ответа @ dikkini )
Когда вы работаете с шаблонами jinja
, вам нужно установить некоторые параметры. В моем случае с python3 я решил его с помощью следующего кода:
if __name__ == '__main__':
app.jinja_env.auto_reload = True
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.run(debug=True, host='0.0.0.0')
вы можете использовать
TEMPLATES_AUTO_RELOAD = True
Из http://flask.pocoo.org/docs/1.0/config/
Проверять ли изменения в источнике шаблона и перезагружать его автоматически. По умолчанию значение равно None, что означает, что Flask проверяет исходный файл только в режиме отладки.
blockquote>
Flask.run
, которая ведет к документам Werkzeug. Но этот конкретный вариант кажется достаточно полезным, чтобы хотя бы упомянуть его в документах Flask. – Xion 1 March 2012 в 20:33No such file or directory
, попробуйте использовать относительный путь, как в:extra_dirs = ['./directory/to/watch',]
– Kevin 15 July 2015 в 05:44path
, этоos.path
. подумал, что стоит упомянуть – bjesus 3 June 2016 в 15:38flask run
из командной строки? – Michael Scheper 25 April 2017 в 19:29