1

我正在使用 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”方式

  1. 为文件命名
  2. 为班级命名。

我见过一些人将这些类命名为视图。如果我正在路由到模板,但这似乎很好,但我提供的是普通的旧 json?你们怎么说?

4

2 回答 2

3

Python 标准命名约定显示在PEP 8中。您询问了文件名和类名。包和模块名称的约定(通常是您的文件名):

模块应该有简短的全小写名称。如果提高可读性,可以在模块名称中使用下划线。Python 包也应该有简短的全小写名称,尽管不鼓励使用下划线。

由于模块名称映射到文件名,并且某些文件系统不区分大小写并截断长名称,因此选择相当短的模块名称很重要——这在 Unix 上不是问题,但它可能是一个将代码传输到较旧的 Mac 或 Windows 版本或 DOS 时出现问题。

当用 C 或 C++ 编写的扩展模块附带提供更高级别(例如更面向对象)接口的 Python 模块时,C/C++ 模块具有前导下划线(例如 _socket)。

对于类名

几乎无一例外,类名都使用 CapWords 约定。内部使用的类另外还有一个前导下划线。

而已。对于您是否将其称为“控制器”或“视图”或“资源”,或者即使您在名称中甚至有诸如“控制器”或“视图”之类的东西,没有任何约定。这里没有官方的“python 约定”,特别是考虑到 Web 应用程序只是 Python 可以做的一小部分。只要您项目中的其他开发人员了解“控制器”与“视图”的含义,您就可以了。不要过度思考这个问题,也不要指望别人对什么命名有正确的答案;这只是我们作为开发人员的负担 :)

但是,如果您要调用它LoginController,请确保它是LoginController,而不是Login_Controller

于 2013-10-09T07:20:05.563 回答
0

您可以遵循 PEP 8 ( http://www.python.org/dev/peps/pep-0008/#package-and-module-names ),这是更Pythonic的方式。你也可以使用Google Style Guide,我觉得很好。

在这种特定情况下,我将为所有控制器使用一个名为controller的文件,并且我的类将命名为 Login。但是,如果你真的更喜欢 login.py 作为你的模块,那么我认为最好用 Controller 命名你的控制器。

于 2013-10-09T07:22:03.580 回答