我正在阅读django教程,我想知道当你在views.py中有两个同名函数时会发生什么?
例如:
def results(request, poll_id):
p = get_object_or_404(Poll, pk=poll_id)
return render_to_response('polls/results.html', {'poll': p})
def results(request, poll_id):
return HttpResponse("You're looking at the results of poll %s." % poll_id)
当我运行代码时,底部函数是被调用的函数。这是如何工作的?
答案 0 :(得分:5)
在Python中,方法和函数可以使用任意数量的参数;这使得不需要使用不同的功能“签名”来支持传递的不同类型的参数;这是函数重载的常见用例。请参阅python文档中的4.7.3. Arbitrary Argument Lists。
调用第二个方法的原因是因为在使用相同的名称(和相同的参数列表)定义方法定义时,只需覆盖它。对于python,它与:
相同>>> x = 1
>>> x = 'Hello'
>>> print x
Hello
您刚刚重新定义了相同的方法,因此它使用了最后一个定义。
答案 1 :(得分:1)
如果我没有误会,你需要使用类,如果你需要扩展或覆盖视图方法......或者使用“if”语句:)
https://docs.djangoproject.com/en/dev/topics/class-based-views/
在你的例子中,那只是python的正常行为......从左上角读取文件..然后它编译并使用它......