FrameWork 56

FrameWork/Django
django-seed을 통해 더미데이터 만들기

이번에는 django-seed 라이브러리를 통해 더미 데이터를 만들어 비어있는 DB 채워주는 것을 알아보고자 한다. django-seed django-seed는 Faker라이브러리를 사용하여 django 모델에 대한 테스트 데이터를 생성해 주는 라이브러리이다. 설치 터미널을 통해 설치한다. 참고로 psycopg2를 설치하니 오류가 발생하여, 바이너리 버전인 psycopg2-binary을 설치하여 진행하였다. pip install django-seed pip install psycopg2-binary 그다음 settings.py에 들어가 앱을 등록한다. INSTALLED_APPS = ( ... 'django_seed', ) 아래 명령어를 통해 다음 생성하고자 하는 앱과 --number 옵션을 작성하여 더미..

FrameWork/Django
settings.py 분리하여 관리하기

Settings.py을 분리한다는 것이 무슨 말이죠? 장고를 사용하다보면 기능 구현을 위해 여러 라이브러리나 모듈, 미들웨어 등을 추가하면서 몸집을 키워나가게 되는데 이 과정에서 settings.py 파일의 크기가 커진 나머지 내가 어떤 것을 추가하였는지 대해 찾기도 어려울 뿐더러, 배포을 할때에는 사용자에게 보여주면 안되는 세부정보들을 제공하지 않기 위해 개발용 세팅과, 배포용 세팅을 따로 둘 필요성이 있습니다. 따라서 이런 이유로 장고 개발자들은 본래 프로젝트를 시작하면 만들어지는 settings.py을 settings 라는 폴더를 만들고 그 안에 common.py, prod.py 등으로 쪼개서 관리하시는 식으로 프로젝트를 관리하고 있습니다. 한문장으로 설명하자면 : 그냥 프로젝트에 사용되는 설정 코..

FrameWork/Django
dumpdata와 loaddata을 통해 DB데이터 추출, 적재하기

이걸 왜 사용하나요? 장고에서 DB을 사용하다 보면, 성능이나 다른 이슈로 인해 다른 DB에 데이터를 옮겨야 하는 상황이 발생하기도 합니다. 이때 dumpdata와 loaddata을 활용한다면 쉽게 DB에서 데이터를 추출하고 적재할 수 있습니다. dumpdata : DB 데이터 추출 dumpdata 명령어를 실행한 뒤 출력되는 데이터를 파일로 추출하는 방식입니다. 해당 명령을 실행하면 dumpdata로 반환되는 값을 data.json 이름의 파일로 보내면서 참고로 data.json 말고 다른 이름으로 변경하여 사용이 가능합니다. python manage.py dumpdata > data.json 특정 장고 앱의 데이터만 저장한다면 dumpdata 뒤에 앱 이름을 입력합니다. python manage.py..

FrameWork/Django
장고(Django) 프레임워크 소개와 프로젝트 생성하기

파이썬은 빅데이터 영역뿐만 아니라 GUI, Web 분야에서도 쉬운 사용법과 직관적인 문법 덕분에 많은 사용자들이 즐겨 사용하고 있는 언어 중 하나이다. 그중 Web 영역에서 파이썬을 사용하려면 프레임워크를 이용하여 프로젝트를 진행하게 된다면 쉽게 웹사이트를 구축하고 운영할 수 있다. 파이썬으로 활용할 수 있는 프레임워크는 Django, Flask, Fastapi.. 등등 많은 종류가 있지만 그중에서도 어느 정도 완성적으로 기능들을 제공하는 Django 프레임워크에 대해 이야기해보고자 한다. 프레임워크 일단 장고에 대해 알아보기 전에 프레임워크가 무엇인지에 대해서 살펴보자. 프레임워크란 "어떠한 목적을 달성하기 위해 복잡하게 적혀 있는 문제를 해결하기 위한 구조"라고 설명하곤 한다. 그리곤 항상 뜨겁게 나..

FrameWork/Django
Forbidden (403) CSRF verification failed 오류 해결하기

상황 Django을 서버에 올려서 배포 한 후에 admin 페이지에서 로그인을 할 때, Http통신에서 Post 메소드를 사용할 때 403 에러를 일으키며 Forbidden (403) CSRF verification failed 로그를 보게 됬다. 해결 Django는 서버가 공격받는 것을 방지하기 위해 CSRF 토큰이 존재하는 이들의 POST요청을 받아드리고, 그 이외는 보안을 위해 권한을 허락하지 않는다고 한다. Django 4.0 이상 부터는 CSRF_TRUSTED_ORIGINS을 이용하여 CSRF 대한 권한을 허락 할 수 있다. CSRF_TRUSTED_ORIGINS = ['stie_address'] https://velog.io/@gene028/%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC..

FrameWork/Flutter
Navigator을 통한 화면 전환과 위젯 필수 매개변수 받기

이번에는 Navigator을 이용한 화면전환과, 위젯에서 필수 매개변수를 받는 방법에 대해서 정리해보고자 한다. Navigator을 이용한 화면전환 플러터에서는 Navigator의 push() 메소드를 통해 화면전환이 가능하다. Navigator.push()에 전환할 페이지를 MaterialPageRoute()에 넣어주면 된다. - main.dart Navigator.push(context, MaterialPageRoute(builder: (context) => FirstScreen())); 다음은 화면 전환의 예제이다. 만약에 전환할 페이지에 매개변수를 넘겨야 한다면, 전환할 페이지의 ()안에 매개변수를 적어서 넘겨주면 된다. - main.dart import 'package:flutter/materi..

FrameWork/Flutter
StatefulWidget와 StatelessWidget 알아보기

이번에는 StatefulWidget와 StatelessWidget에 대해서 정리해보고자 한다. 생명주기 일단 StatefulWidget, StatelessWidget을 논하기전에, 생명주기에 대해서 이해할 필요가 있다. 생명주기란 위젯의 시작점에서 끝점까지 이르는 과정에 대한 주기를 의미한다. 윗 그림에서 왼쪽은 Stateless, 오른쪽은 Stateful 생명주기를 나타낸다. Stateless 일단 Stateless의 과정을 먼저 살펴보자. Stateless는 Constructor과정에서 생성되고, build에서 작업을 진행한다. 여기서 눈여겨 봐야할 점은 Stateless는 라이프사이클안에서 모든 과정, build가 단 한번만 이루어진다는 것이다. Stateful 반면 Stateful은 Constru..

FrameWork/Flutter
Flutter 프로젝트 디렉토리 구조, 위젯 알아보기

이번에는 플러터를 다루기전에 알아두면 좋은 여러가지 기초 지식에 대해서 다뤄보고 그에 대한 내용을 정리하고자 한다. 프로젝트 디렉토리 구성 일단 플러터 프로젝트를 만들게 되면 수많은 디렉토리가 추가가 된다. 이 중에서 우리가 자주 다루는 부분은 lib폴더 안에 있는 main.dart라는 파일이고 나머지 andriod, ios는 우리가 만든 main.dart 라는 파일을 안드로이도나, IOS로 변환 시켜 줄때 어떻게 설정해야 하는지에 대한 부분으로, 그 외의 부분은 따로 설정해주지 않아도 된다. 만약에 웹뷰를 포함한 패키지가 필요할 경우에는 pubspec.yaml에 패키지의 정보가 담기게 되니 이를 참고하자. 위젯 위젯이란 화면에 보이게 하는 모든 요소를 의미한다. 우리는 이제 main.dart에서 코드..

FrameWork/Flutter
WillPopScope을 통해 뒤로가기 버튼 기능 활성화 하기

이번에는 WillPopScope을 통해 뒤로가기를 누르면 전 화면으로 넘어가도록 하는 방법에 대해 정리한다. 흔히 아이폰이나 현재 나오고 있는 안드로이드 폰 같은 경우 뒤로가기 버튼이나 홈 버튼 없이 제스쳐를 통해 해당 행동을 제어하고 있다. 하지만 그 반대의 경우로 홈, 뒤로가기 버튼이 존재한다면 해당 버튼을 눌렀을 때, 재 역활을 할 수 있도록 설정하여야 한다. WillPopScope willPopScope 위젯은 주로 Scffold 위젯을 감싸서 뒤로가기 버튼을 제어할때 자주 사용한다. 사용 방법은 리턴하는 Scaffold 부분을 willPopScope로 감싸고, onWillPop을 통해 이를 제어한다. 현재 여기서 사용하고 있는 컨트롤러는 https://jheaon.tistory.com/220 여..