반응형

Django 8

django admin에서 ForeignKey 선택 제한

다음과 같은 models.py가 있다. from django.contrib.auth.models import User class Article(models.Model): user = models.ForeignKey(User) title = models.CharField(max_length=50) content = models.TextField() created = models.DateTimeField(auto_now_add=True) 누가 블로그 같은 것을 만들었나보다. 위 model을 토대로 django admin 도구는 user 필드를 선택 위젯으로 나타내준다. 사용자가 많아지면, 만약 만 명이라고 생각해보면, 거기서 원하는 한 명을 선택하는 것은 매우 좋지 못한 일이다. 이를 피하기 위해서 어떻게 ..

Programming/Python 2017.02.18

AWS EC2 리눅스 인스턴스에서의 django와 postgresql 설치와 연동

아마존 웹서비스 EC2 리눅스 서버에 django와 postgresql을 설치하고 연동하는 과정을 정리한다. 이미 아마존 리눅스를 운영체제로 하는 EC2 인스턴스를 할당 받았고, ssh를 통해 접속할 수 있다는 가정 하에 시작한다. python 3.5버젼, postgresql 9.5 버젼을 사용할 것이다. django에 대한 내용이 주가 아니기 때문에, EC2 인스턴스에 올리기 위한 django 프로젝트는 이미 다 준비가 되어있으며, 그 소스코드를 github 저장소를 이용해 간단히 clone한다고 가정하겠다. EC2 인스턴스에 이것 저것 설치하기 아마존 리눅스는 yum이라는 패키지 매니저를 제공하므로 이를 통해 python와 postgresql을 설치한다. # EC2 기본 계정 $ sudo yum in..

etc 2016.10.16

django management 시스템 안에서 내 명령어 만들고 사용하기

django 프로젝트를 만들다보면, 테스트를 위해 필요할 때마다 django shell을 통해서 일시적인 코딩이 필요할 때가 많다. 게다가 그 코딩을 반복적으로 사용해야 할 경우가 많은데, 그 때마다 django shell에서 같은 코드를 실행시키는 것이 꽤나 불편하고 비효율적일 수 있다. 이 글에서는 django management 시스템에 내가 필요한 명령어를 만들고 사용하는 법을 정리한다.사용할 코드DB에서 뭔가를 빼와서 그 내용을 출력하는 작업을 예제로 삼겠다. DB에 아이템을 하나씩 추가할 때마다 그 아이템을 확인하고자 하는 상황이다. django shell을 통해서 다음과 같은 코드를 통해 테스트를 할 수 있을 것이다. $ python manage.py shell >>> from myapp.m..

Programming/Python 2016.10.09

Heroku에 django 프로젝트 배포

클라우드 서비스는 개발자 뿐만 아니라 일반인에게도 친숙한 개념이 될 정도로 널리 퍼져있다. 대중적으로는 드랍박스 등의 저장소 서비스로 클라우드를 인식하고 있을 가능성이 높은데, 이 드랍박스를 뒤에서 받쳐주는 클라우드 서버를 아마존이 제공하고 있다는 사실은 알고 있는가. 아마존의 AWS를 필두로 마이크로소프트의 Azure 등의 유명한 대기업 외에도 cloudera, cloudway, 우리나라의 kt ucloud 등 클라우드 서비스를 제공하고 있는 업체는 넘나 많다. 그런데 이러한 서비스들을 살펴보면 결국엔 돈을 내야한다는 결론에 다다른다. 기업 레벨에서 사용을 해야한다면 과금은 당연한 이치이겠지만 개인이 시범/실험적으로 사용을 하고 싶을 때는 당장 돈을 내야하지 않더라도 과금의 존재 자체가 클라우드 서비스..

etc 2016.05.22

Django Form에서 DOM class 설정 등의 front-end 조작법

웹을 만들면서 귀찮은 일 중의 하나가 form이다. 입력 폼을 구성하고 디자인을 맞추고, 또한 필요하다면 front-end에서 체크할 수 있게 javascript도 짜게 될 수도 있다. back-end에서 값을 받아서 처리하는 일도 해야한다. 개인적으로 서버 로직 짜는 건 괜찮은데 보이는 쪽을 만지는 것은 꽤나 귀찮은 일이다. 다행히 django에서는 form에 관한 사항을 일괄적으로 다루기 때문에 많은 도움이 되기는 커녕 front-end쪽을 건드리는 것은 아니기 때문에 여전히 내가 하기 싫은 일은 남아있다. 초심자라면 더욱이 난감한 상황이 발생할 수 있다. 우선 django에서 다음의 간단한 form을 쓰겠다 (폼 필드를 일일이 쓰기 싫어서 ModelForm을 씀을 양해부탁드립니다).# myapp/f..

Programming/Python 2016.04.02

무분별한 회원가입을 막는 Google Recaptcha 사용법

이 세상엔 무서운 사람들이 많다. 전 세계를 돌아다니며 어딘가를 뚫고 들어오려는 동유럽 친구들을 두고 하는 말이다. 자신의 블로그나 웹페이지가 있다면 네이버나 구글 애널리틱스 등을 통해서 한 번 지켜보면 분명히 바다 넘어의 누군가가 우리를 지켜보고 있다는 것을 알 수 있을 것이다. 이런 저런 연유로 이번에는 django 웹앱에서 구글 recaptcha를 넣어서 기계가 아닌 진정한 사람만이 회원가입을 할 수 있도록 하려한다.이게 뭔지 모르는 사람을 위해 CAPTCHA의 위키 설명을 첨부한다.CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart, 완전 자동화된 사람과 컴퓨터 판별,캡차)는 HIP(Human Inte..

Programming/Python 2016.03.26

django 모델 상속 ( Model Inheritance )

django의 ORM ( Object-Relational Mapping ) 기능은 데이터베이스 구조를 머리속 그림대로 직관적으로 구현하는 데에 매우 편리하다. 만약 당신이 SQL에 숙련되지 못했다면 엄두를 내지 못할 DB 구조를 django에서는 파이썬 코드를 통해 비교적 쉽게 해결할 수 있는 것이다. 이번에는 수 많은 django의 ORM 기능 중에서 상속 기능만 간단히, 그리고 부분적으로 설명해 보고자 한다.django는 세 가지의 모델 상속 타입을 제공하는데 abstract base classes, multi-table inheritance, proxy model 이라는 이름으로 django doc에서 설명한다. 객체 지향적인 프로그래밍을 요즘은 모두들 아시기 때문에 상속에 대해서 설명하진 않을 것..

Programming/Python 2016.03.19

django signal의 이해를 위한 간단한 예제

django 프레임워크는 어떤 특정한 일을 수행할 때마다 알려줄 것을 설정하고, 그 때에 지정한 동작을 수행할 수 있게 하는 신호(signal)를 발생하는 기능을 가지고 있다. 자바스크립트의 이벤트를 생각해보면 아마도 이해하는 데 도움이 될 것이다. django에서 signal이 어떻게 돌아가는 지를 간단하게 예제를 통해 설명해 보겠다.여러 종류의 signal이 있는데, 여기서는 post_save signal을 이용해서 DB model에 관련해서 save가 작동하면, 저장이 완료된 이후에 지정한 동작을 수행하는 예제를 써보겠다.myapp/models.pyfrom django.db import modelsclass Location( models.Model ): country = models.CharFiel..

Programming/Python 2016.03.18