오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Django 17

[Django] Django MySQL Fulltext Index 설정

오늘은 Django-mysql로 구성되어 있는 어플리케이션에서 Full text index를 설정하는 방법에 대해 알아보겠다. 먼저 현재 장고에서는 Fulltext 인덱스를 ORM으로 지원하지 않기 때문에 실제 쿼리를 데이터 베이스에 날려 동작해줘야한다. 아래 명령어를 통해 FullText를 설정하는 쿼리를 마이그레이션 파일로 만들어주자. app_name에 마이그레이션 파일을 생성하고자하는 app 이름을 작성해주면 된다. python manage.py makemigrations app_name --empty --settings=app.settings.local 생성된 마이그레이션 파일은 아래와 같다. 이제 operations안에 Fulltext를 생성하는 쿼리를 작성해주자. from django.db i..

[Django] Aggregate와 Annotate

아래에서 사용된 코드는 아래 레포지토리에서 받을 수 있다. https://github.com/junha6316/django_ex junha6316/django_ex Contribute to junha6316/django_ex development by creating an account on GitHub. github.com 장고 ORM의 기능 중 Aggregate와 Annotate에 대해 정리한 글이다. 어떤 기능을 하고 있는지는 많이 들어 알고 있지만 실제로 사용해본적은 없다; http://raccoonyy.github.io/django-annotate-and-aggregate-like-as-excel/ (엑셀만큼 쉬운) Django Annotation/Aggregation Django ORM을 강력..

[Docker] 자 떠나자 고래 잡으러 : Docker로 Django+Nginx 배포하기

서비스를 만들면서 어려운 점을 순위 매겨본다면 배포는 분명 세 손가락안에 들 것이다. 개발을 시작한지 얼마되지 않아서 클론 코딩이나 게시판 같은 어플리케이션을 만든 후 마주하는 암흑어둠의 흑막인 킹제네럴갓충무공카이사르알렉산더 악당같은 검은 터미널 창이 앞으로 길이 쉽지 않을 것을 보여주는 것 같다. 물론 배포가 어려운 것은 웹서버나 WAS의 내부적인 동작을 명확히 알지 못하기 때문일 것이다. 이런 어려움을 제외하더라도 배포는 결코 쉬운 과정이 아니다. 이번 포스팅은 배포의 어려움을 덜어줄 방법에 대해 소개할 것이다. 바로 도커를 이용한 Django(WAS) + Nginx(Web server) 배포다. 물론 도커가 배포의 어려움만을 덜어주는 기술은 아니다. 여러 장점 중 하나가 쉽게 배포할 수 있게 해주는..

[Django] python manage.py를 하면 무슨 일이?(runserver 편)

지난 글에서는 python manage.py를 작성했을 때 어떤 과정으로 명령어가 실행되는지 알아보았다. 이번 포스트에서는 python manage.py 명령어 중에 가장 많이 사용한다고 해도 무방한 python manange.py runserver 를 사용했을 때 어떤 일이 발생하는지 알아보겠다. 1. 코드 먼저 지난 글에서 python manage.py [파일이름]을 작성하면 해당 파일을 실행시켜준다는 것을 알았다. 이를 통해 python manage.py runserver를 실행시키면 runserver.py를 실행 시켜주는 것을 알 수 있다. runserver.py 코드는 아래와 같다. 가시성을 위해 메인 로직만을 적어놓았으며 자세한 코드를 확인하고 싶다면 아래 링크나 VS code에서 Go to ..

[장고백서] 필드에서 작성한 validator가 작동을 안할 때

필드에 validators를 선언해 해당 필드 값에 제한을 둘 때가 있다. 가령 이름에 공백을 포함하고 싶지 않다면 해당 기능을 아래와 같이 구현할 수 있다. #persons/models.py from django.db import models from .validators import space_validator class Person(models.Model): name = models.CharField("이름", max_length=100, validators=[space_validator,]) #persons/validators.py from django.core.exceptions import ValidationError def space_validate(value): if len(value.sp..

[Django] Form 동적으로 생성하기

현재 하고 있는 프로젝트의 요구 사항중에 admin에서 몇가지 설정을 통해 이벤트 랜딩페이지를 생성하는 부분이 있었다. 이벤트마다 수집하는 개인정보가 달랐기 때문에 수집 개인정보 항목(이름, 전화번호..등등)을 이벤트와 ManyToMany로 연결시켜서 이벤트마다 수집 개인정보 항목을 다르게 수집할 수 있도록 만들어 주었다. 일단 기한안에 완성해야했기 때문에 view에 모든 부분을 구현하고 배포한뒤 코드를 보니 개인정보를 받는 view나 django template 쪽의 코드가 지나치게 지저분해졌다. 이를 리팩토링하기 위해 form을 사용해서 이벤트마다 동적으로 폼을 생성할 수 있도록 만들어 주기로 했다. 이번 포스트에서는 정적인 form이 아닌 모델 마다 변하는 동적인 폼을 생성하는 방법에 대해 알아보도..

[Django] python manage.py를 하면 무슨 일이?

가장 많이 사용하는 Django 명령어 순위를 뽑아보면 당연히 아래의 명령어들이 상위에 있을 것이다. python manage.py makemigrations python manage.py migrate python manage.py runserver python manage.py startapps python manage.py createsuperuser 하지만 장고를 사용하는 4개월 동안 단 한번도 이 manage.py가 무슨 일을 하는지 생각해본적이 없다.. 하지만 문득 얘는 뭘하는 애지 라는 생각이 들었고. python manage.py something 을 작성했을 때 무슨 일이 일어나는지 관련된 명령어들에 대한 분석을 해보려고 했다. 이번 글은 그런 글들 중 첫번째 글로 python manag..

[Django] Django에서 DB 엑셀 파일 생성하는 방법

장고 관련해서 admin에서나 일반 응답으로 csv로 export하는 글은 많지만 csv 파일에 접근하는 사람마다 엑셀 설정이 달라 한국어과 관련된 인코딩으로 인해 파일이 깨져서 보이거나 하는 문제가 발생한다. 그 때문에 파일을 열고 일일이 엑셀 설정을 바꿔야 정상적으로 읽히는 경우가 많다. 이번 글에서는 장고에서 .xls 파일로 export 하는 방법에 대해서 알아보도록 하겠다. 1. xlwt 받기 먼저 아래의 모듈을 받아줘야 한다. pypi.org/project/xlwt/ xlwt Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2...

[Django] django apache (CentOS) 배포

본격적인 설명에 앞서 아직 왜 장고와 아파치를 같이 배포해야되는지 모르겠다면 아래의 글을 한번 읽어보도록 하자 cocook.tistory.com/87 [Web] WAS와 Web Server 차이 장고 배포와 관련된 글을 보면 WS(Web Server, 웹서버)와 WAS(Web Application Server, 웹어플리케이션서버)에 대해서 많이 볼 수 있다. 이름도 비슷해서 예전에는 사람마다 같은 걸 다르게 부르는 건가 싶었 cocook.tistory.com 이번 포스트에서는 WAS인 장고와 WS인 아파치를 배포 과정에 대해 설명하도록 하겠다. 1. Python 3.6 설치 먼저 yum 명령어를 이용해 python3.6을 받아주도록 하자. 다른 방법도 있어지만 취소됐다고 한다. sudo yum insta..

[Django] Template Tags and Filters (Filter 편)

장고는 매우 잘 갖추어진 프레임워크이다. 이미 구현되어있는 부분들이 많아서 개발자가 직접 구현하지 않고 그대로 사용하면 되는 부분들이 많다. 이러한 여러 기능들 중에 가장 유용한 기능을 하나 뽑으라면 난 Django Template을 꼽고 싶다. 오늘은 Django Template 중 Tag와 Filter에 대해 알아보도록 하겠다. 먼저 상대적으로 자유도가 낮은 filter를 다루고 이후에 Tag를 다루도록 하겠다. 1. Filter Filter는 template에서 Variable안에서 사용하는 툴로서 아래와 같이 사용한다. {{variable|filter}} variable과 적용하려는 filter를 "|" 로 구분해서 사용하면 variable에 해당 filter가 적용되서 웹페이지 상에 표현된다. ..