[Django]Reverse

손성수·2023년 4월 11일
1

Django

목록 보기
9/17

겪은 문제

사용자가 글 작성 페이지에 접근하면
에러창을 띄우거나 홈 화면으로 되돌아가는 것이 아닌
로그인이 필요하다는것을 직관적으로 보여주기 위해서
로그인창으로 이동시키게 하고 싶었다.

def create_post(request):
    user = request.user.is_authenticated 

따라서 위의 코드에서 인증된 사용자가 아니라면 False를 반환받고

    if not user:
        return redirect('sign-in/')

다음과 같은 redirect 메소드를 이용해 사용자를 안내하고 싶었다.

하지만 url을 찾을수 없다는 에러창과 함께 접속된 주소값을 확인하니

127.0.0.1:8000/create-post/sign-in/
주소값으로 이동되었다.
create-post는 현재의 주소값이고,
내가 원하는 주소의 이동값은
127.0.0.1:8000/sing-in 이였는데,
나의 기대값과 다른 결과값이 반영된걸 알 수 있었다.

해결한 방법

def create_post(request):
    user = request.user.is_authenticated
    if not user:
        return redirect(reverse('sign-in'))

reverse 메소드를 사용해 풀이했는데, 여기서 중요한건
reverse의 값으로 들어온 'sign-in'이 가리키는 값이다.

path('sign-in/', views.sign_in_view, name='sign-in')

reverse의 반환값은 path의 name을 가리키는 값이다.

profile
더 노력하겠습니다

0개의 댓글

관련 채용 정보