Django/Internationalization

[장고] i18n: LOGIN_REDIRECT_URL 설정방법

QUERY 2021. 8. 22. 04:55

 


장고-로고
장고-로고


i18n을 이용해 다국어로 로그인에 성공할 경우, 해당 언어의 프로필 페이지로 자동 연결될 수 있도록 설정하는 방법에 대해 알아보겠습니다. django-allauth를 사용하면, 장고는 기본적으로 로그인에 성공할 경우 /accounts/profile/로 연결하도록 설정돼 있습니다. 이는 소셜 계정(socialaccount)을 통한 로그인 또한 마찬가지입니다. 때문에 i18n을 사용해 언어마다 url주소의 접두사를 언어코드로 설정해 놓았다고 하더라도, settings.LOGIN_REDIRECT_URL을 따로 설정해주지 않는다면, 어떤 언어로 로그인을 하더라도 영어(settings.LANGUAGE_CODE가 'en'인 경우) 페이지로 로그인하게 됩니다. 보다 구체적으로 예를 들자면 다음과 같습니다.

 

한국어 로그인 페이지인 http://127.0.0.1:8000/ko/accounts/login/에서 로그인을 하더라도 영어 프로필 페이지인 http://127.0.0.1:8000/en/accounts/profile/로 리다이렉트 됩니다. 한국어뿐만이 아니라 모든 언어가 마찬가지입니다. 

 

하지만 우리가 원하는 것은, 한국어로 로그인했을 땐, 한국어 프로필 페이지가 뜨고, 기타 언어로 로그인할 땐, 기타 언어의 프로필 페이지로 자동 연결되길 원합니다. 이럴 땐, 앞에서도 잠깐 언급했듯이 settings.py에서 몇 가지를 추가해주면 됩니다.

 

>>> settings.py

from django.urls import reverse_lazy

LOGIN_URL = reverse_lazy('account_login')
LOGIN_REDIRECT_URL = reverse_lazy('account_profile')

 

설정을 추가한 뒤, python manage.py runserver로 로컬 서버를 실행하면, 다른 언어 페이지에서 로그인을 할 때, 해당 언어의 프로필 페이지로 자동 연결되는 것을 확인하실 수 있습니다.

 


 


* 참고 *

만약, 지금껏 django-allauth의 소셜 계정(socialaccount) 로그인을 잘 사용해 오던 웹사이트인데, i18n 다국어 기능을 사용할 수 있도록 업데이트 중이시라면, 각각의 소셜 로그인 provider마다 개발자 센터에 접속해 redirect_uri를 추가해주어야만 정상 작동합니다. (여기서 소셜 로그인 provider라 함은 구글, 페이스북, 네이버, 카카오 등의 서비스업체를 의미합니다.)

 

보다 구체적인 설명을 위해 "구글"을 예로 들어보겠습니다. 콘솔 클라우드 구글로 접속하신 뒤, [ APIs & Services ] > [ Credentials ] > [ OAuth 2.0 Client IDs ]의 Authorized redirect URIs에 접두사로 한국어 코드가 추가된 url 주소를 추가해줍니다.  http://127.0.0.1:8000/ko/accounts/google/login/callback/ 만약, 한국어가 아닌 다른 언어의 사용을 원하신다면, /ko/ 위치에 다른 언어 코드를 대체하시면 됩니다.