본문 바로가기

Python/Django15

[Django] File upload (FileField, ImageField) Django 에서 파일(이미지)를 업로드하기 위해서는 FileField 또는 ImageField 를 사용하면 된다. Django Test Project 만들기 테스트를 위해 간단한 프로젝트를 만든다. (Pycharm 을 사용한다면 더 쉽게 프로젝트를 만들 수 있다.) $ django-admin.py startproject firstsite 주로 Django project 에서는 startapp 명령어를 통해 app 을 만든다음 application 단위로 코딩을 하지만 본 가이드에서는 Django Project 를 만드는게 목적이 아니므로 app 을 따로 만들지 않고 project 에서 바로 테스트를 할 것이다. (db 또한 Django 에서 제공하는 sqlite3 을 사용할 것이다.) settings... 2016. 10. 19.
[Django] uwsgi + nginx in ubuntu 이 페이지는 https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-14-04 사이트에 설명된 가이드 해석 및 테스트를 하며 발생된 이슈를 정리합니다. ~~ 작성중 (이 부분의 내용은 프로젝트 생성 관련 내용으로 위의 링크에서도 이해하기 쉽습니다.) ~~uWSGI 애플리케이션 서버 설정하기이제 두개의 Django 프로젝트 설정을 마쳤고, uWSGI 설정을 할 준비가 되었다. uWSGI 는 Django 애플리케이션과 WSGI 라는 표준 인터페이스로 통신하는 애플리케이션 서버이다. ubuntu에서 Nginx와 uWSGI 를 설정하는 더 자세한 사항은 여기에서 확인.. 2016. 10. 18.
[Django] Test # Django Unit tests- Python 3.3 밑의 버전의 경우, unittest.mock 모듈의 백포트를 설치해야 함.- Django의 버전이 낮을 경우, settings file을 명시해 주어야 함.- Selenium 테스트 시, Selenium 2, Firefox, Python >= 2.6이 필요하며 selenium package(version > 2.13) 설치 필수. -> 실행 시에 --selenium 옵션으로 실행한다. $ ./runtests.py --settings=test_sqlite --selenium admin_inlines 1. Django Unit test의 특징 Django는 project나 app을 생성하게 되면 기본적으로 tests.py라는 파일이 생성된다.(unit.. 2016. 10. 12.
[Django] Extra extra()extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 장고에서는 복잡한 WHERE 절을 표현하기가 쉽지 않은 경우가 있다. 이러한 경우에 extra() 를 사용하면 된다. 하지만 장고 문서 사이트에서는 QuerySet으로 표현이 안되는 최후의 경우에만 사용하는 것을 권고하는 것 같다.정의에 의하면, extra lookups를 사용하면 다른 데이터베이스 엔진으로 변경될 때 SQL 코드가 명시적으로 작성된 것이 아니기 때문에 이동할 수 없을지도 모르고, DRH principle을 위반한다. 그래서 가능하면 extra() 사용을 피해야 한다.params, select, where, tab.. 2016. 10. 6.
[Django] Filter vs Exclude Exclude Posts.objects.exclude(date__month=3) 조건에 속하지 않은 값을 조회IS NOT, NOT IN Filter Posts.objects.filter(date__month__in=[1,2,4,5,6,7,8,9,10,11,12]) 조건에 속하는 값을 조회IS, IN 2016. 10. 4.
[Django] Custom Model Fields Custom Model FieldsDjango model에서 사용하는 fields를 상속받아 수정하는 방식이다. from django.db import models class NullCharField(models.CharField): """ CharField with Null & Blank """ def __init__(self, *args, **kwargs): kwargs['blank'] = True kwargs['null'] = True super(NullCharField, self).__init__(self, *args, **kwargs) class NullBigIntegerField(models.BigIntegerField): """ BigIntegerField with Null & Blank ".. 2016. 9. 29.
[Django] Abstract Model Abstract ModelDjango model을 작성하다 보면 여러 테이블에 같은 형식의 필드(컬럼)이 있는 경우가 있다.이럴 땐, Abstract Model(추상 모델)을 만들어 상속받으면 된다.기본 방식 from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): home_group = models.CharField(max_length=5) 추상 클래스 만들기추상 클래스 (Abstract Model)을 만들긴 쉽다. 상위.. 2016. 9. 29.