Сначала класс и его сотрудники должны сначала выполнить свое предназначение, а не сосредоточиться на деоэндентах. Управление жизненным циклом (когда экземпляры удаляются, когда они выходят из сферы действия), не должно быть частью ответственности кладов. Принятая наилучшая практика заключается в создании или настройке нового компонента для управления зависимостями с использованием инъекции зависимостей.
Часто программное обеспечение усложняется, имеет смысл иметь несколько независимых экземпляров класса «singleton» с различным состоянием. В таких случаях ошибочный код для простого захвата синглтона. Использование Singleton.getInstance () может быть в порядке для небольших простых систем, но оно не работает / масштабируется, когда ему может понадобиться другой экземпляр того же класса.
Ни один класс не следует рассматривать как одноэлементный, но скорее, это должно быть применение его использования или того, как он используется для настройки иждивенцев. Для быстрого и противного это не имеет значения - просто luke hardcoding говорит, что пути к файлам не имеют значения, но для больших приложений такие зависимости нужно учесть и управлять более подходящим образом с помощью DI.
Проблемы, причина в тестировании - признак их жесткого кодированного единственного случая использования / среды. Набор тестов и множество тестов являются индивидуальными и отделяют что-то, что несовместимо с hardcoding singleton.
Все внутри {{ ... }}
- это похожее на Python выражение. Вам не нужно использовать другой {{ ... }}
внутри, чтобы ссылаться на переменные.
Отбросить дополнительные скобки:
<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
(Обратите внимание, что функция url_for()
принимает конечную точку name , а не URL-путь, по умолчанию имя имени функции moremagic
в вашем примере).