userena 설치가 정상적으로 완료되었다면, 몇가지 셋팅만으로 사용자 등록, 로그인, 로그아웃등의 계정과 관계된 기능을 넣을 수 있게된다.
설정 순서
(1) 생성한 프로젝트의 settings.py 파일에 django app들을 등록해야 한다. 이것은 userena를 설치하면 같이 설치가 될 것이다.
* 참고로 easy_thumbnails 앱이 정상적으로 동작하기 위해서는 PIL(Python Imaging Library) 라이브러리 설치가 필요하다고 한다. easy-thumbnails는 사용자 계정에 자신의 사진을 업로드하여 그 사진의 썸네일 이미지를 계정의 프로파일 이미지로 사용하기 위한것이다.
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'userena', 'guardian', 'easy_thumbnails', ) |
(2) setting.py내에 AUTHENTICATION_BACKENDS와 ANONYMOUS_USER_ID 를 추가해 준다.
AUTHENTICATION_BACKENDS = ( 'userena.backends.UserenaAuthenticationBackend', 'guardian.backends.ObjectPermissionBackend', 'django.contrib.auth.backends.ModelBackend', ) ANONYMOUS_USER_ID = -1 |
(3) 새로운 앱을 하나 생성한다. 앱 이름을 'accounts'라고 정한다면
python manage.py startapp accounts |
(4) 생성한 accounts 앱을 INSTALLED_APPS에 등록한다.
|
(5) 아래 코드를 방금 생성한 accounts앱의 models.py에 추가한다.
#-*- coding:utf-8 -*- from django.db import models from django.contrib.auth.models import User from django.utils.translation import ugettext as _ from userena.models import UserenaBaseProfile
class MyProfile(UserenaBaseProfile): user = models.OneToOneField(User,unique=True, verbose_name=_('user'),related_name='my_profile') |
(6) 아래 코드를 settings.py에 추가한다.
AUTH_PROFILE_MODULE = 'accounts.MyProfile' LOGIN_REDIRECT_URL = '/accounts/%(username)s/' LOGIN_URL = '/accounts/signin/' LOGOUT_URL = '/accounts/signout/' |
(7) 프로젝트의 urls.py 파일에 아래코드를 추가한다.
(r'^accounts/', include('userena.urls')), |
(8) activation 메일을 보내기위한 메일 서버 설정을 해야한다. gmail을 사용하는 경우라면 아래처럼 하면된다.
EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'your gmail ID@gmail.com' EMAIL_HOST_PASSWORD = 'your gmail password' |
(9) 쉘에서 다음과 같이 입력한다.
python manage.py check_permissions |
(10) 이렇게 설정을 마치고, 서버를 실행후, http://localhost:8000/accounts/signup 으로 접속해보면 아래와 같이 뜬다.
python manage.py runserver |
참고
(1) 메일 보내기가 정상적으로 되는지 확인을 위해 django 쉘에서 다음처럼 해서 확인이 가능하다.(메일서버를 gmail로 설정한 경우) 메일이 전송완료되면 '1'이라고 뜬다.
python manage.py shell ...(python이 실행됨) >> from django.core.mail import send_mail >> send_mail('mail title', 'mail contents', '발신메일@gmail.com', ['수신메일주소',]) |
(2) gmail의 SMTP서버를 설정했고, 테스트에서 메일이 전송되는 것을 확인했지만, django 프레임워크에서 사용자 등록후에 메일이 가지않고 오류를 낸다.
'Web' 카테고리의 다른 글
Django userena의 simplified 버젼 (0) | 2013.05.19 |
---|---|
Django app에서 request 객체 (0) | 2013.05.19 |
Django-userena로 사용자 등록/로그인 구현 - 개요 및 설치 (0) | 2013.05.19 |
가장 인기있는 Django 어플리케이션 10개. (0) | 2013.05.19 |
장고(Django) 1.5.1 를 이용한 웹 서비스 개발 준비 (0) | 2013.05.19 |