로그인 안 한 사용자가 특정 페이지에 접근 못하도록 하기


소스코드 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를 호출을 못합니다.. 혹시 한줄에 다 같이 쓸수있는건가요??

  • 2016년 02월 26일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 누가 올리셨는데... 답변다는중에 질문이 지워졌네요 답변이 아까워서 그냥 제가 등록합니다.    정두식   2016.2.26 15:52     
조회수 210


1 답변


좋아요
0
싫어요
채택취소하기

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를 설정해 두셔야 하구요.

  • 2016년 02월 26일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close