2011-06-21 3 views
0

Djangoでオーバーロードされたビューを作成するにはどうすればいいですか? 問題は、まったく1つの引数を受け入れるか、まったく受け付けないという考え方です。 引数がある場合は、それを渡して表示します。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'), 

を行うには、これを行うための正しい方法は何ですか?私はトラインだものをお見せしましょうか

ありがとうございます。

答えて

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

ここでは、あなたのビューシグネチャにオプションの引数を使用できます。

は、単純にこのようなあなたのビュー定義:

def member_list(request, message=None): 

をそしてマッチはURLにありますならば、それはでいっぱいによていない場合、それはまだNoneになります。 (this blog postから適応)

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