我正在使用Flask-Restful在我的python应用程序中实现REST api。我有一个模型模块,一个业务模块和一个控制器模块。这是我在login_controller.py文件中定义的控制器之一
from flask.ext.restful import Resource,request,reqparse
from app.business.login import Login
from app.models.models import User, Address
class Login_Controller(Resource):
def __init__(self):
pass
def get(self):
loginBO=Login()
obj=loginBO.getAllUsers()
return {"users":obj}, 201
def post(self):
pass
def delete(self):
loginBO=Login()
status =loginBO.deleteUser(request.json)
if status:
return {"status":"true"},201
else:
return {"status":"false"},401
def put(self):
loginBO=Login()
status =loginBO.addUser(request.json)
if status:
return {"status":"true"},201
else:
return {"status":"false"},401
现在我对将上述文件命名为 控制器 并不满意?什么是“PYTHONIC”方式
我看到有些人将这些类命名为视图。这似乎很好,如果我路由到模板,但我服务普通老json?你们说什么?
答案 0 :(得分:2)
Python标准命名约定显示在PEP 8中。您询问了文件名和类名。 package and module names的约定(通常是您的文件名):
模块应该有简短的全小写名称。下划线可以 如果它提高了可读性,则在模块名称中使用。 Python包 也应该有简短的全小写名称,尽管使用 不鼓励下划线。
由于模块名称映射到文件名,而某些文件系统是 不区分大小写和截断长名称,重要的是模块 名称选择相当短 - 这在Unix上不会成为问题, 但是当代码被传输到较旧的Mac或时,它可能是一个问题 Windows版本,或DOS。
当用C或C ++编写的扩展模块附带时 提供更高级别的Python模块(例如,更面向对象) 接口,C / C ++模块有一个前导下划线(例如_socket)。
对于class names:
几乎无一例外,类名使用CapWords约定。 内部使用的类别还有一个主要的下划线。
就是这样。您是否将其称为“控制器”或“视图”或“资源”,或者即使您在名称中甚至包含“控制器”或“视图”等内容也没有约定。这里没有正式的“python约定”,特别是考虑到Web应用程序只是Python可以做的一小部分。只要您的项目中的其他开发人员理解“控制器”与“视图”的含义,您应该没问题。不要过度思考这个问题,也不要指望别人能够找到正确的答案。这只是我们作为开发人员的负担:)。
但是,如果您将其称为LoginController
,请确保它是LoginController
,而不是Login_Controller
。
答案 1 :(得分:0)
您可以按照PEP 8(http://www.python.org/dev/peps/pep-0008/#package-and-module-names),更多 pythonic 方式。您也可以使用Google Style Guide,我认为很好。
在这种特殊情况下,我会为所有控制器使用一个名为 controller 的文件,我的类名为Login。但是,如果你真的喜欢login.py作为你的模块,那么我认为最好用Controller命名你的控制器。