로그인 안 한 사용자가 특정 페이지에 접근 못하도록 하기
조회수 2724회
소스코드 url(r'codeedit$', views.index, name='index') 실행하기 ▶ 예를 들어 www.mysite.com/codedit로 가려면 다음과 같은 url 코드가 있어어야 합니다. 하지만 로그인했을 때에만 다음과 같은 url로 이동이 가능하려고 하려면 어떻게 해야할까요?
제가 찾아보았는데 장고 docs에 나와있기로는
소스코드 django.contrib.auth.views.login 실행하기 ▶ 다음과 같은 코드를
소스코드 url(r'$', django.contrib.auth.views.login), 실행하기 ▶ 와 같이 사용하면 가능하다고 하는데 이렇게 써버리면 views.index를 호출을 못합니다.. 혹시 한줄에 다 같이 쓸수있는건가요??
1 답변
-
1) 일단 사용자가 로그인하지 않았다면 www.mysite.com/codeedit 으로 가는 링크를 표시하지 않아야겠져. 이 부분은 www.mysite.com 이 연결된 views와 템플릿에서 처리하면 될것 같구요.
2) 그래도 사용자가 www.mysite.com/codeedit 을 치고 바로 들어올수도 있져? 그럴때는 index에서
def index(request): if not request.user.is_authenticated(): return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
이렇게 할 수도 있구요. 아니면 redirect대신 에러메시지를 보여줘도 됩니다.
다른 방법으로는
@login_required def index(request): #뭔가 하기
이렇게 하면 자동으로 로그인 안된경우 settings.LOGIN_URL로 redirect합니다.
두 방법 다 미리 settings.LOGIN_URL를 설정해 두셔야 하구요.
댓글 입력