Django有点重载视图

时间:2011-06-21 17:35:26

标签: django parameters django-views overloading

如何在Django中重载视图? 问题是我有一个视图,可能只接受一个参数或没有。 如果有参数,它会将其传递给查看。

让我们展示一下我在尝试的东西'做

views.py

def member_list(request,message):
    memberList = Member.objects.all()
    return render_response(request, 'user/member_list.html', {'memberList': memberList,    'message':message })

def member_list(request,message):
    memberList = Member.objects.all()
    return render_response(request, 'user/member_list.html', {'memberList': memberList,    'message':message })

urls.py

(r'^member/list/$', 'views.member_list'),
(r'^member/list/(?P<message>[-\w]+)/$', 'views.member_list'),

这样做的正确方法是什么?

由于

2 个答案:

答案 0 :(得分:4)

def member_list(request,message=None):
    if message:
        pass
    else:
        pass

答案 1 :(得分:0)

您可以在视图签名中使用可选参数,这对您有利。

只需像这样定义您的视图:

def member_list(request, message=None):

然后,如果网址中有匹配,则会填写。如果没有,则仍为None

if message is None:
    # I got here via the '^member/list/$' URL regex
else:
    # I got here via the '^member/list/(?P<message>[-\w]+)/$' URL regex

(改编自this blog post