Django 앱 만들기
시작하기 전에
- 프로젝트 vs. 앱
- 프로젝트는 다양한 앱을 포함
- 앱은 웹 어플리케이션의 기능 (e.g., 웹 블로그시스템,공공 기록의 데이터베이스 또는 간단한 투표 앱)
virtualenv: 개발환경에서 독립된 개발환경을 제공해주는 프로그램
# 패키지 설치 $ sudo pip install virtualenv # 프로젝트 생성 $ virtualenv venv_projat New python executable in /naver/venv/venv_projat/bin/python Installing setuptools, pip, wheel...done. # 가상환경 실행 $ source ./venv_projat/bin/activate # 가상환경 에서 사용하는 python moduel 확인 $ pip list Django (1.11.3) pip (9.0.1) pytz (2017.2) setuptools (36.2.5) wheel (0.29.0) # 가상환경 종료 $ deactivate
- 프로젝트 vs. 앱
- MVT 모델
- 좋은 참고자료
- 모델 Model:
- DB 구조를 설정하는 컴포넌트, ORM 방식을 사용하여 SQL 문을 직접 사용하지 않고 파이썬 객체로 접근
- 하나의 class 가 하나의 table 을 의미한다
- 뷰 View: (== MVC 모델의 Controller)
- 데이터를 입력받거나 표시하는 컴포넌트
- 템플릿 Templates: (== MVC 모델의 View)
- 사용자의 입력과 이벤트에 반응하여 Model 과 View 를 업데이트
- 디자인 영역의 분리 및 재사용서을 높이기 위해 HTML 구조만 따로 모아놓은 것
- {{변수}}, {{% 태그 %}}
흐름도 Django 프로젝트
생성
# django-admin.py {{실행 파라미터}} {{프로젝트명}} $ django-admin.py startproject djangoproject
프로젝트 구조
djangoproject/ ㄴ manage.py # 초기화, 마이그레이션, 실행 등을 수행하는 파일 ㄴ djangoproject/ ㄴ __init__.py ㄴ settings.py # 웹사이트 설정이 있는 파일 - ALLOWED_HOSTS: 접근 가능 호스트 정리 - DATABASES: 사용할 DB 정보 - ENGINE: 'django.db.backends.sqlite3' 'django.db.backends.postgresql_psycopg2' 'django.db.backends.mysql' 'django.db.backends.oracle' - INSTALLED_APPS: - django.contrib.auth – 인증시스템 - django.contrib.contenttypes – 컨텐츠타입 프레임워크. - django.contrib.sessions – 세션프레임워크 - django.contrib.sites – 한번의 Django설치로 여러 사이트 관리를 위한 프레임워크. - django.contrib.messages – 메시징 프레임워크 - django.contrib.staticfiles – 정적파일을 관리하기 위한 프레임워크. - **신규 생성할 앱을 프로젝트에 추가한다.** ㄴ urls.py # urlresolver 가 사용하는 패턴 목록을 포함 ㄴ wsgi.py # wsgi 호환 서버에서 서비스를 하기 위한 진입점
Django 앱
- 생성
$ python manage.py startapp django1stapp
- 생성
실행
$ python manage.py makemigrations # model 의 변화 사항을 migration 폴더에 python 파일로 저장함. # 위에서는 ./migrations/ 폴더내에 0001_initial.py 파일이 새로 생김 # 아직 database 에 model table 생성된것은 아님
$ python manage.py migrate # db table 생성
$ python manage.py runserver ip:port # django project run
Django 의 구조
'개발 > python' 카테고리의 다른 글
Python multiprocess vs multithread (0) | 2018.05.24 |
---|---|
django mysql rest api project (0) | 2018.03.11 |
Django 프로젝트에서 batch job 돌리기 (0) | 2018.01.23 |
Django 프로젝트 생성 및 App 만들기 (0) | 2017.08.27 |
Python Django WEB project 개발하기1 (0) | 2016.08.17 |