반응형

Django 16

[장고] REST API 사용 이유

REST API의 REST는 REpresentational State Transfer의 약자로, 사용자의 행위를 HTTP method로 분리해 url의 구조를 단순화시켜 줌으로써 개발의 확장과 수정을 용이하게 해 줍니다. 이해를 돕기 위해 보다 구체적인 예를 들어보겠습니다. 행위에 따른 카테고리의 URL들을 다음과 같이 정의해보겠습니다. /show/category/ # 카테고리 나타내기 /add/category/ # 카테고리 추가 /change/category/ # 카테고리 변경 /delete/category/ # 카테고리 삭제 만약, 각각의 카테고리마다 포스트들이 존재한다고 가정해보겠습니다. 그럼 순식간에 url이 복잡해지기 시작합니다. /showpost/category/post/ # 포스트 나타내기 ..

[장고] i18n: LOGIN_REDIRECT_URL 설정방법

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

[장고] gettext: 번역기능 모듈

장고에서 언어를 번역할 때 사용하는 gettext 모듈에 대해 알아보겠습니다. >>> settings.py import os MIDDLEWARE = [ ... 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', ... ] LANGUAGE_CODE = 'en-us' LANGUAGES = [ ('ko', 'Korean'), ('en-us', 'English'), ('es', 'Spanish'), ('fr', 'French'), ] LOCALE_PATHS = [os.path.join(BASE_DIR, '..

[장고] i18n: 다국어 기능 Snippet

웹사이트를 제작할 때, 오로지 한국인만을 위해 만들어진 웹사이트가 아니라면, 한국어 이외에 영어, 스페인어, 프랑스어, 중국어, 일본어 등 다양한 언어를 지원해야 하는 경우가 있습니다. 언어가 추가될 때마다 영문 버전의 base.html, home.html, navbar.html, footer.html을 만들고, 스페인어 버전의 템플릿들, 프랑스어, 중국어, 일본어 등의 템플릿을 일일이 만들어서 url을 지정해줄 수도 있습니다. 하지만 그럴 경우, 언어만 다를 뿐 결국 동일한 형태의 템플릿들을 여러 개로 관리해야 하기 때문에 번거롭고 비효율적입니다. 그럴 때 사용할 수 있는 기능이 바로, 장고에서 기본적으로 제공하는 i18n입니다. 이번 포스트는 언제든지 복사 붙여 넣기 해서 쓸 수 있도록, 제가 주로 ..

[장고] i18n: 다국어 기능 사용법

장고에서 기본적으로 제공하는 다국어 지원 기능인 i18n의 사용법에 대해 알아보겠습니다. 1. 장고 프로젝트 생성 먼저, 장고 프로젝트를 생성합니다. cmd: django-admin startproject 프로젝트명 이해의 편의를 위해, 우리 예시에서는 프로젝트명: django_i18n / 앱 명: i18n_app으로 설정했습니다. * 참고 * 앱 생성 명령어는 python manage.py startapp i18n_app입니다. 2. 기본 설정 추가 settings.py 파일에 다국어(현지화) 사용 관련 설정들을 추가해줍니다. >>> settings.py import os INSTALLED_APPS = [ ... 'i18n_app', ... ] MIDDLEWARE = [ ... 'django.contr..

[장고] AWS EC2 배포 방법 (uWSGI + Nginx)

1. EC2란? Elastic Compute Cloud의 약자로, 온라인상에서 컴퓨터를 통째로 빌려주는 컴퓨터 임대 서비스이다. 2. 배포 전, 장고(Django) 사전 작업 * 주의사항: 장고 프로젝트의 settings.py에서 ALLOWED_HOSTS = ['*'] 로 변경하는 게 좋다. '*'은 모든 호스트를 열어준다는 뜻이다. Terminal에서 장고 프로젝트 폴더로 이동. cmd: pip freeze 위 명령어로 해당 프로젝트에 설치된 패키지(프로그램들) 목록을 확인할 수 있다. cmd: pip freeze > requirements.txt 해당 목록들을 requriements.txt 파일에 옮겨 담는다. 제대로 담겼는지 확인하는 방법: cmd: cat requirements.txt 이 작업을 ..

Django/Deployment 2021.04.22