2012-03-25 16 views
1

DetailViewを使用する前に、this solutionを使用してURLをリダイレクトしました。DjangoでDetailViewクラスを使用してURLをリダイレクトするにはどうすればよいですか?

ここで私はDetailViewを使用していますが、どのように同じリダイレクトを達成できますか? nameは、LOGIN_REDIRECT_URLsettings.pyを使用しているので同じでなければなりません。ここで

urls.pyの一部が

urlpatterns = patterns('doors.views', 
    url(
     r'^users/$', 
     ListView.as_view(
      model = User, 
      template_name = 'doors/users/list.html' 
     ), 
    ), 
    url(
     r'^users/(?P<pk>\d+)/$', 
     DetailView.as_view(
      model = User, 
      template_name = 'doors/users/detail.html' 
     ), 
     name = 'users_detail' 
    ), 
    url(r'^users/self/$', # do some kind of redirect 'users_self_detail', name = 'users_self_detail'), 
) 

答えて

1

のように見えるものであることがHTTPリダイレクトで混乱してしまうためのが、をリダイレクトこのを呼び出すないようにしましょう。ビューが同じように動作するようにしたいとしましょう。つまり、同じコード&テンプレートに終わるはずです。ここで私はサブクラスDetailView自分自身をサブクラスにします。以下のような何か:

urls.pyで次に
class UserDetailView(DetailView): 
    model = User 
    template_name = 'doors/users/detail.html' 

class SelfUserDetailView(UserDetailView): 
    def get_object(self): 
     return self.request.user 

from django.contrib.auth.decorators import login_required 
from myapp.views import UserDetailView, SelfUserDetailView 
url(r'^users/(?P<pk>\d+)/$', UserDetailView.as_view(), name='users_detail'), 
url(r'^users/self/$', login_required(SelfUserDetailView.as_view()), name='users_self_detail'), 
+0

私はすでにそこ 'DetailView'をインポートしておりますので、私はurls.py''で 'DetailView'をサブクラス化する必要がありますか? – hobbes3

+1

個人的に私はあなた自身の関数ベースのビューを書くときと同様に、サブクラスを私のアプリ 'views.py'に入れます。さもなければ、あなたの 'urls.py'は巨大になります - 私たちは私が今作業しているサイトで100クラスを超えるカスタムクラスビューを持っています。 –

+0

クラスのSelfUserDetailViewの上に '@ login_required'を置くのはどうですか?あなたが 'urls.py'を入れた理由は何ですか? – hobbes3

関連する問題