본문 바로가기

장고

(13)
django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint') 에러 문제점 django에서 database에 테이블을 생성시 다음과 같은 에러가 난다. Traceback (most recent call last): File "manage.py", line 10, in execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 330, in execute self.fet..
ubuntu 12.04 + nginx 1.4.2 + django 1.5.2 + uwsgi 1.4.10 설정 방법 웹 서버는 KT의 ucloud 서버를 사용하고 있다. 잡설이지만, 아직 KT서비스가 불안정하긴하다. SSH로 서버에서 작업을 하다보면 간혹가다가 장애가 발생한다. 이유없이 서버 접속이 끊어진다. 실제로 서비스를 하기위해서 클라우드 서버를 알아 보고 있다면, KT는 아직 아이다라는 판단이다. 어쨌든.. 제목처럼 Ubuntu 12.04 LTS에 Nginx 1.4.2에, django 1.5.2, uwsgi 1.4.10을 KT의 ucloud 서버에 설치하여 테스트를 하였다. 생각보다 시행착오를 좀 겪은바, 그 내용을 남겨보려고 한다. 1. KT ucloud에 SSH로 접속. (1) SSH 접속 KT의 ucloud 포털에서 클라우드 콘솔에서 신청한 서버의 네트워크를 보면, 외부에서 접근할 수 있는 ip와 내부 i..
django + celery + RabbitMQ 적용해서 비동기 task queuing하기. Django로 웹 서비스를 개발하다보면, 백엔드(Backend)에서 어떤 프로세싱을 해야할 일이 생길것이다. 예를들면 업로드된 영상을 처리한다던지, 어떤 결제나 승인을 대기한다던지등등.. 이런 작업을 처리하기 위한 시스템을 만들기 위해서 Celery라는 분산 메세지 패싱기반 비동기 태스크 큐(Queue)를 사용하면 좋다. 나도 처음 써봤는데.. 아직 전체 구조가 확실히 눈에 들어오지는 않지만, 간단한 예제를 돌려보니 대충 감은 온다. 구글링을 해보면 참 설명이 많이 나오는데.. 이게 Celery 버젼에 따라 설정방법이 바뀐것도 있고해서.. 몇번 시도하다가 에러만 계속 나길래.. 이것저것 건들여보다가 정상동작 하는것을 확인하고 블로그에 기록을 해둔다. 1. Celery 3.0 설치 웹사이트 : http:/..
django 1.5에서 메일로 가입 activation 처리하기. 웹 사이트에 가입시 사용자 등록을 하는 것 만으로 가입을 바로 하는것이 아니라, 가입시에 등록한 이메일로 activation을 최종 체크해야 등록하게 하는 방법을 설명하려고 한다. 이런 방법을 사용하는 이유는 실제 사용 가입자임을 가려내기 위한것이고, email주소를 id로 사용하는 것과 유사한 효과를 낸다. email을 id로 사용하면 그 자체가 고유 id로 작용하는 장점이 있지만, 어짜피 email로 activation 확인을 받아서 최종적으로 실제 사용할 사람인지를 구분한다는 점에서.. 굳이 id로 email주소를 사용하는 것보다 개별적인 id 이름을 허용하되 email activation으로 체크하면 될 것라 생각한다. 물론, email 주소를 고유 id로 사용하면 a@test.com과 a@exa..
django에서 email로 registration 하기. 참고 URL : https://github.com/bitmazk/django-registration-email django에서는 default가 username이 primary 값이라, username을 기준으로 등록된다.(동일한 username이 존재하지 않는다.) 하지만 email로 바꾸고 싶다면..위 사이트에서 소스를 다운받아 설치하면 된다. 사용법도 어렵지 않다. 사용방법 (1) 패키지를 설치한다. pip install -e git://github.com/bitmazk/django-registration-email#egg=registration_email (2) app를 등록한다. INSTALLED_APPS = [ # all your other apps 'registration', 'registr..
django에서 email를 사용자 id로 사용하고 싶을때.. Django에서는 User라는 객체가 있는데, user email이 아닌 username이 unique한 값으로 설정되어 있다. 즉, 메일주소는 동일한값이 존재하는 것은 허용하지만, username은 중복되는 것은 허용하지 않는다. 그런데, 요즘은 username으로 가입 id를 받는것보다 email주소를 user id로 받는 경우가 많다. 그러면 어떻게 해야할까.. 아래 사이트에서 Custom user model을 다운받아서 설치하면 된다. 참고로 django 1.5버젼 이상에서만 테스트된것 같다.django-custom-user는 django의 기본적인 User객체와 동일하지만, username 대신에 email을 사용한다는 차이 뿐이다. https://pypi.python.org/pypi/djang..
Django 과연 scale적인 면에서 괜찮은 선택인가. Django의 메인 페이지에 방문해보면 인기있는 웹 서비스 사이트가 올라와있다. Instagram, Openstack, Pinterest.. 서비스 내용만봐도 적지않은 트래픽과 사용자들을 가지고 있을것이라 생각된다. 아래 웹 사이트를 가보면 http://www.djangosites.org/ Django로 개발된 웹사이트들에 대한 정보가 올라와있다. 현재 4299개의 웹사이트가 Django를 기반으로 개발되어져 있단다.Deployment 통계자료를 보면, 사용하는 데이터베이스 백엔드로 mysql이 절반이상을 차지하고 있고, postgres가 두번째.. 88%가 이 두가지 데이터베이스를 활용하고 있다. 웹 서버는 쉽게 예상할 수 있듯이 아파치가 압도적이고, nginx라는 웹서버도 많이 사용하는 편이다.(23..
Django userena의 simplified 버젼 django의 user account 부분을 담당할 userena를 설치하고 사용하는데에 있어서, 몇가지 불편함이나 무거운 감이 있어서 수정된 버젼을 만들어서 배포하고 있다. github : https://github.com/barszczmm/django-easy-userena django userena의 simplify된 버젼. 현재 공식 문서는 없다. userena의 base template에서는 title, content, content-title 블럭을 필요로 하기 때문에 보통 이 템플릿을 매번 overwrite해서 사용해야 하는 불편함과 django-guardian 퍼미션을 허용해 줘야하는 불편함때문에, 아예 그 부분을 제거하였다고 한다. 그리고 django-guardian을 사용하면 데이터베이..