我正在构建一个网站(在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)之后命名我的函数吗?
答案 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():
...