본문 바로가기

728x90
반응형

Frame Work/Django

(21)
Django와 MySQL 연결 문제 Exception 탐구 개요 django는 python에서 Web Application Server를 만들기 위해 사용되는 프레임 워크입니다. Web Application Server를 만들 때는 자연스레 데이터 베이스의 니즈가 생기게 되고 DataBase와의 연결 설정을 필요로 하게 됩니다. 그런데 django 관점에서는 DataBase는 외부에 존재하는 대상이기 때문에 연결을 요청하고 데이터를 송수신하는 과정에서 다양한 문제가 발생할 수 있으며 이 문제들을 잘 제어하여 Exception을 처리하게 됩니다. 이번엔 마주한 문제는 django에서 ‘MySQL Server has gone away’라는 Exception입니다. django에서 daemon을 만들어 띄워서 동작시키던 도중 일어났던 Exception이었습니다. 이 ..
[Django] show_urls 흉내내기 개요 django_extensions은 django 개발시 사용할 수 있는 편리한 추가 기능을 제공하는 Third Party 라이브러리입니다. 이 라이브러리는 django 프로젝트의 개발 및 디버깅을 보다 쉽게 만들어줍니다. 여러 가지 기능들이 있겠지만 그중에서도 저는 django에 정의된 view를 확인하는 데 많이 사용하고 있으며 문서를 작성할 때 프로젝트에 정의된 총 view의 수를 측정할 때 사용하곤 합니다. (view의 총개수를 본다는 건 얼마나 많은 API가 정의되어 있는지를 의미합니다) 그런데 정의된 view만 확인하는 것 외에 이것을 이용하여 추가로 필요한 정보들을 측정하려면 제공되는 기능만 이용해서는 부족하다고 했습니다. 적절히 활용하기 위해 django-extensions는 어떻게 vi..
Django project를 src layout으로 구성하기 개요: src layout? django 모범 사례에서는 django app의 생성 기준을 하나의 개념 집합 단위로 생성해야 된다고 명시하고 있습니다. 하지만 저는 이렇게 app을 구성하게 될 경우 네이밍을 통해서는 어떤 것이 djjango app에 해당하는 디렉터리인지 구분이 안 가는 상황을 종종 겪곤 합니다. 그러하여 최근엔 django app을 구성할 때 단일 app을 만들고 그 안에 적절한 개념을 생성해서 구분하는 편입니다. 여기서 "단일 app"이라는 말 그대로 django app을 하나만 생성하는 것을 뜻합니다. 이렇게 단일 app을 통한 구성 방식으로 작성하던 도중 뭔가 더 발전시킬 수 있는 방법이 있지 않을까 싶어 프로젝트 구성에 관한 자료를 찾아보던 중 src layout이라는 방법이 있..
[Django] auth_group 다루기 Group? Django의 migrate를 실행하게 되면 Django 설정에 의해 auth_group, xxx_groups, auth_group_permissions라는 테이블이 생성되는 것을 알 수 있는데 이번 포스팅은 이 세 테이블에 데이터를 추가하려면 어떻게 해야 되는지 정리한 글이다. auth_group 위 테이블은 Django User Model에 생성된 데이터 즉, 사용자를 그룹으로 묶어주는 역할을 하는 테이블이다. 기본적으로 정의된 필드는 다음과 같다. Field|Type |Null|Key|Default|Extra | -----+------------+----+---+-------+--------------+ id |int(11) |NO |PRI| |auto_increment| name |v..
uWSGI Socket + Nginx + Docker 1. 개요 Django Project 배포 시 구성 방법 중 하나는 Nginx를 Reverse Proxy로 두고 중간에 WSGI로 Nginx와 Django Project 간 연결하는 방법이다. 이 때 WSGI를 지원하는 소프트웨어 중 uWSGI를 사용하게 될 경우 socket을 이용하여 상호 통신할 수 있도록 구성하는 방법이 존재하는데 이번 포스팅은 이런 환경을 Docker를 이용해 구성할 수 있도록 시도했던 내용들이다. 본 포스팅에 사용된 대략적인 Django Project Tree의 일부분이다. . ├── Dockerfile ├── config │ ├── __init__.py │ ├── asgi.py │ ├── exception.py │ ├── settings │ ├── type_defined.py ..
uWSGI를 알아보자 HTML 삽입 미리보기할 수 없는 소스 개요 DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or performance tests. (And that’s how it’s gonna stay. We’re in the business of making web frameworks, not web servers, so improving this server to be able to handle a production environment is outside the scope of Django.) 프로덕션 환경에서 이 서버를 사용하지 마십시오. 보안 감사나 성능 테스트를 거치지 않았습니다. (그리고 그렇게..
[Django] OneToOne Relation OneToOne Relation OneToOne은 1:1 관계를 뜻한다. 예를 들어 "하나의 사용자는 하나의 프로필만 가질 수 있다"라는 상황에서 사용할 수 있다. OneToOne Relation을 경우 하나의 객체만을 반환한다. 아래 예제를 통해 이해해보자. Author와 AuthorProfile Model 아래 모델은 Author(작가)와 이 Author에 대한 Profile 정보를 저장하는 간단한 모델이다. class BaseModel(models.Model): date_of_create = models.DateTimeField(auto_now_add=True) date_of_update = models.DateTimeField(auto_now=True) class Meta: abstract = T..
django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint') (1215, 'Cannot add foreign key constraint') 이 메시지가 이 케이스에서만 일어나는 상황은 아니기 때문에 메시지를 보고 적절히 대처하는 방법을 생각할 필요가 있다. 개요 django 프로젝트 스타일을 바꿔보려다가 발생한 상황이다. Exception Message Traceback (most recent call last): File "/Users/jako/github-src/django-hacksoft-style/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/Users/jako/githu..

728x90
반응형