7

Djangoのドキュメントでは、彼らはこれを言っています https://docs.djangoproject.com/en/dev/topics/auth/default/#user-objects

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_view(request):

しかし、クラスベースのビューで login_required を使用するにはどうすればよいですか

@login_required
classMyCreateView(CreateView):

これによりエラーが発生します

'function' object has no attribute 'as_view'

4

2 に答える 2

12

次のような多くの方法でそれを行うことができます

https://docs.djangoproject.com/en/dev/topics/class-based-views/#decorating-class-based-views

  1. これのどちらか
 urlpatterns = patterns('',
        (r'^about/', login_required(TemplateView.as_view(template_name="secret.html"))),
        (r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),
    )
  1. またはこれ
class ProtectedView(TemplateView):
    template_name = 'secret.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(ProtectedView, self).dispatch(*args, **kwargs)
于 2013-01-14T07:33:22.720 に答える