有没有好方法将 pychecker/pylint 应用于 Tornado 模板中的 python 代码?
我正在使用 Tornado 2.0 (Python 2.6.5) 构建一个简单的 Web 应用程序。
当然,我的 Tornado 模板包含 Python 代码片段。对于我的非模板代码,我使用 pychecker 和 pylint 来检查错误等。
但是,显然 pychecker 和 pylint 不能直接在模板上运行,因为模板不是正确的 python 文件(对于非模板) Tornado 用户:他们是类似 html 的片段,带有一些控制序列和嵌入的 python 代码)。
所以,我的问题是:有人能建议一种将 pychecker/pylint 应用于这些模板文件中的 python 代码的好方法吗?大概这会涉及从文件中提取代码。
我可以对如何做到这一点进行一些猜测,但我很好奇其他人是否认为这是一个问题以及他们采取了什么解决方案。我对网络应用程序设计/构建还相当陌生,所以我对以实践经验为指导的答案感兴趣。
I am using Tornado 2.0 (Python 2.6.5) to build a simple web app.
Naturally, my Tornado templates contain snippets of Python code. For my non-template code, I am using pychecker and pylint to check for errors, etc.
However, obviously pychecker and pylint can't be run over the templates directly, b/c the templates are not python files proper (for non-Tornado users: they are html-like snippets w/ some control sequences and embedded python code).
So, my question is: can anyone suggest a good way to apply pychecker/pylint to the python code in these template files? Presumably this would involve extracting the code from the files.
I can hazard a few guesses as to how to do this, but I am curious if other people perceive this as a problem and what solutions they have pursued. I am still fairly new to web app design/construction so I am interested in answers guided by practical experience.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用视图类模式来避免模板中出现无法分析的 Python 代码。
创建一个Python类来处理您的视图,而不是函数
将所有“模板逻辑”代码作为类方法。您的模板像 {{ view.get_full_name }} 和 def get_full_name(self) 一样调用它们: return self.item.first_name + " " + self.item.last_name
从类中生成实例
生成
使call()作为你处理的起点
传递“self “到你的模板作为上下文变量
但通常所有 Python 框架(Pyramid、Zope)都遵循相同的模式:
Django 的一些说明, com/questions/742/class-views-in-django">Django 中的类视图
“$yourframeworkname view class”应该会在 Google 中产生更多教程。
You need to use view class pattern to avoid cluttering your template with Python code which cannot be analyzed.
Create a Python class to process your view, instead of function
Have all "template logic" code as class methods. Your template calls them like {{ view.get_full_name }} and def get_full_name(self): return self.item.first_name + " " + self.item.last_name
Make instance out of your class
make call() as starting point for your processing
Pass "self" to your template as a context var
Some instructions for Django, but generally all Python frameworks (Pyramid, Zope) follow the same pattern:
Class views in Django
"$yourframeworkname view class" should yield more tutorials in Google.