403 금지됨에 직면했을 때 사용자를 로그인 페이지로 리디렉션 할 수 있습니까?django 403 금지 - 로그인으로 리디렉션
다음 코드 고려 : 나는/도메인을 방문하는 경우
urls.py
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
urlpatterns = patterns('',
url(r'^', include(router.urls)),
)
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
renderer_classes = (renderers.JSONRenderer, renderers.TemplateHTMLRenderer)
template_name='rest_framework/users.html'
def list(self, request, *args, **kwargs):
response = super(viewSet, self).list(request, *args, **kwargs)
if request.accepted_renderer.format == 'html':
return Response({'request':request, 'queryset': response.data['results']})
return response
를/사용자가 로그인하지 않은 반면, I 403 금지됨 오류가 발생합니다. 대신 로그인 페이지로 리디렉션하고 싶습니다. 즉, 403 오류를 표시하지 말고 대신 로그인 페이지로 직접 리디렉션하십시오.
@login_required
def list(...):
을하지만 작동하지 않습니다
나는 퍼팅 시도했다. 나는 그 내부 viewset 때문에 가정합니다.
def list(...):
if not request.user.is_authenticated():
return render_to_response('domain/login.html')
을하지만 다시 작동하지 않습니다
나 또한 노력했다.
다양한 403middlewares를 시도했지만 아무 소용이 없습니다.
나는handler403 = 'site.views.login'
없음 성공 urls.py
에 handler403 핸들러를 통해 리디렉션했습니다.어떻게해야합니까?
장고 버전 : 1.5.4
을 올릴 수 있습니다. 고맙습니다. 클래스 UserViewSet (...) @method_decorator (로그인 필요) def dispatch (self, * args, ** kwargs) : return super (ProtectedView, self).dispatch (* args, ** kwargs) – user3417614
당신도 그것을 위해 사용할 수있는 깔끔한 믹스 인이 있는데, 그것을 내 대답에 추가했습니다. – ACGray