Django视图的命名约定?

时间:2009-05-17 20:55:00

标签: django naming-conventions

我正在构建一个网站(在Django中)并且对于用于我的函数的正确命名约定感到困惑。简单示例:假设我有一个页面让用户决定是否要查看图像A或图像B.一旦用户提交决定,该网站就会显示用户请求的图像。

以下是我在视图模块中使用的两个函数:

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."""

命名执行此操作的函数的约定是什么?我看到至少两种可行的方法:

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

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

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

4 个答案:

答案 0 :(得分: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 :(得分:1)

只要你有好评,我怀疑它对你来说不会是一个问题。

无论如何,最好根据他们的工作来命名函数,因此function1可以是“displayImageChoices”,而function2可以是“displayImage”。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我知道现在这有点过时了,但是自从切换到基于类的视图。

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

例如,基于类的视图:

class MyClassBasedView():
    ...

基于功能

def my_function_based_view():
    ...