1. Для работы через onclick функция должна быть в глобальной области видимости. Это неприемлемо.
2. Добавляя js логику в template вы размазываете её по разным файлам. Да, да сейчас все так делают, но это не повод делать так, если есть альтернативные варианты.
3. Правило хорошего тона - контролировать обработчики и убирать их при необходимости, это тоже удобнее делать, когда всё в js.