2009-05-17 56 views
5

我正在构建一个网站(在Django中),并且对我的函数使用正确的命名约定感到困惑。简单的例子:比方说,我有一个页面,让用户决定他们是否想要看到图像A或图像B.一旦用户提交决定,该网站显示用户请求的图像。Django视图的命名约定?

这里有两个功能我会在我的意见模块:

def function1(request): 
    """Returns the page that presents the user with the choice between A and B""" 

def function2(request): 
    """Takes in the submitted form and returns a page with the image the user requested.""" 

什么是命名是这样做的功能惯例?我看到至少两种可行的方法:

选项1function1: "decide", function2: "view_image"

选项2function1: "view_choices", function2: "decide"

的中心问题是,每个这些功能做两两件事:(1)处理和存储用户提交的数据,以及(2)返回下一页,其可能与用户的输入相关或不相关。所以我应该在(1)或(2)之后命名我的函数吗?

回答

1

只要你有这些好评,我怀疑它永远不会成为你的问题。

无论如何,最好根据它们的功能命名函数,因此function1可以是“displayImageChoices”,function2可以是“displayImage”。

IE,function1需要一些输入并显示一些选项,function2需要一些输入并显示图像。

+3

PEP8(http://www.python.org/dev/peps/pep-0008/)表示: “功能名称应该是小写字母,必要时用下划线 分开,以提高可读性。 mixedCase只允许在主题样式已经为 的上下文中使用(例如threading.py),保持向后兼容性。“ – 2009-05-18 08:37:55

+0

这是一个很好的观点,我关注的是“名称传达什么”,而不是骆驼/格式约定。 – 2009-05-18 09:07:03

8

通常约定是某种CRUD(创建,检索,更新,删除)。我个人使用索引,详细信息,创建,更新,删除我的行为。但是,我不认为这适用于您的自定义功能。

真的,它听起来像你的功能应该合并到相同的“选择”功能。然后根据结果是否是POST显示表单或结果。

注:我已经严重复制这个例子形成django docs on form handling

def choose(request): 
    """ 
    Presents the user with an image selection form and displays the result. 
    """ 
    if request.method == 'POST': # If the form has been submitted... 
     form = ChoiceForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      # Process the data in form.cleaned_data 
      # ... 
      return HttpResponseRedirect('/thanks/') # Redirect after POST 
    else: 
     form = ChoiceForm() # An unbound form 

    return render_to_response('choose.html', { 
     'form': form, 
    }) 
1

我会使用类似于内置在视图中适用的东西(object_list中,object_detail并等)式。 (总是一个好主意)

其余的会尽可能遵循这个概念(item_action)。

0

我知道这已经有点过时了,但自从切换到基于类的视图之后。

PEP8(python.org/dev/peps/pep-0008)类的命名约定是每个单词的大写,没有空格。如果仍然使用函数样式视图,那么它将是小写函数名称,空格替换为下划线以提高可读性。

例如与基于类的观点:

class MyClassBasedView(): 
    ... 

基于函数

def my_function_based_view(): 
    ...