Есть ли хороший способ применить pychecker/pylint к коду Python в шаблонах Tornado?

Я использую Tornado 2.0 (Python 2.6.5) для создания простого веб-приложения.

Естественно, мои шаблоны Tornado содержат фрагменты кода Python. Для моего нешаблонного кода я использую pychecker и pylint для проверки ошибок и т. Д.

Тем не менее, очевидно, что pychecker и pylint не могут быть запущены поверх шаблонов напрямую, поскольку шаблоны не являются собственно файлами python (для пользователей, не использующих Tornado: это фрагменты в стиле html с некоторыми управляющими последовательностями и встроенным кодом Python).

Итак, мой вопрос: кто-нибудь может предложить хороший способ применения pychecker / pylint к коду python в этих файлах шаблонов? Предположительно это будет связано с извлечением кода из файлов.

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

1 ответ

Решение

Вам нужно использовать шаблон класса представления, чтобы избежать загромождения вашего шаблона кодом Python, который невозможно проанализировать.

  • Создайте класс Python для обработки вашего представления вместо функции

  • Иметь весь код "шаблонной логики" как методы класса. Ваш шаблон вызывает их как {{ view.get_full_name }} и def get_full_name(self): вернуть self.item.first_name + " " + self.item.last_name

  • Сделайте экземпляр из своего класса

  • сделать вызов() в качестве отправной точки для вашей обработки

  • Передайте "self" вашему шаблону как контекстную переменную

Некоторые инструкции для Django, но, как правило, все платформы Python (Pyramid, Zope) следуют одному и тому же шаблону:

Классовые представления в Джанго

"$yourframeworkname view class" должен привести к большему количеству обучающих программ в Google.

Другие вопросы по тегам