장고 개념 잡기

2017. 1. 1. 23:08Dev/Django

반응형

알찬 예제로 개념잡기 좋은 곳

https://tutorial.djangogirls.org/ko/django_start_project/




virtualenv 환경 만들기(선택사항)


가상환경 설치

$ python3 -m venv [venv명]


가상환경 실행

$ source [venv명]/bin/activate


참고 - 가상환경 종료 

([venv명])~$ deactivate


가상환경 상태에서 django 설치

([venv명])~$ pip install django



장고 프로젝트 시작


$ django-admin startproject [프로젝트명] #프로젝트명폴더 아래 프로젝트설치
$ django-admin startproject [프로젝트명] . #현재 위치에 프로젝트설치

으로 프로젝트를 만들었다면 명령을 실행시킨 경로에 프로젝트명으로된 폴더 하나가 만들어진다.

그 아래에 다시 프로젝트명으로된 폴더가 또 하나 만들어지는데 여기에 프로젝트와 관련된 많은 설정 파일이 있는 것을 확인 할 수 있다.

구조는 아래와 같다.

프로젝트명 폴더

- 프로젝트명 폴더

- manage.py

manage.py으로 여러가지 명령을 입력하여 장고를 사용할 수 있다. 참고

db.sqlite3는 장고 프로젝트 생성시 기본으로 제공해주는 파일기반의 DBMS. 같은 위치의 프로젝트명 폴더 안에 들어있는 settings.py를 열어보면 DATABASES 변수에 sqlite3 를 설정하고 있는 부분을 볼 수 있다.

같은 위치의 프로젝트명 폴더안에는 프로젝트 설정파일들이 존재한다.



프로젝트안에 앱 만들기


$ python manage.py startapp [앱이름]

으로 애플리케이션을 만들수 있다. 경로에 앱이름으로 생성된 폴더를 확인할 수 있다.

프로젝트명 폴더

- 프로젝트명 폴더

- 앱이름 폴더

- manage.py

url 요청시 프로젝트명 폴더 안에있는 urls.py에 맵핑된 구조를 따라서 응답한다.

앱폴더 안에도 urls.py가 있는데 프로젝트/urls.py에서 include()를 이용해 앱/urls.py가 처리하도록 설정할 수 있다.



마이그레이션


앱폴더 안에는 models.py 파일이 있는데 DB모델과 관련있는 파일이다. 이곳에 테이블과 데이터 타입등을 지정해 주고 마이그레이션을 할 수 있다.

class [model명](models.Model):
    :
    :

models.py에 모델링을 했다면 다음의 명령어로 마이그레이션을 진행하자.

$ python manage.py makemigrations
$ python manage.py migrate

makemigrations는 models.py에 정의한 내용을 파이썬이 사용할 수 있도록 만들어두는 단계라 할 수 있다. 

앱폴더/migrations/ 위치로 가보면 makemigrations 명령으로 생성된 파일을 볼 수 있는데 열어보면 어떤 코드로 바뀌었는지 알 수 있다. 

migrate는 실제로 DBMS와 마이그레이션 되는 명령이다. 명령 실행 후 디비에 원격접속하면 추가나 변경된 사항을 확인할 수 있다.



관리자 설정


당고 관리자 계정 생성 명령

$ python manage.py createsuperuser

이 명령으로 http://localhost:8000/admin 접속으로 관리자 화면에 접속할 수 있는 계정을 만들 수 있다.

관리자 화면에서는 마이그레이션된 데이터도 볼 수 있도록 설정할 수 있다.

앱폴더/admin.py에 다음의 내용을 추가해 준다. model class명에는 models.py에 정의해둔 class명을 적는다.

from .models import [model class명]

admin.site.register([model class명])

http://localhost:8000/admin 다시 접속해보면 마이그레이션된 테이블과 데이터들을 확인할 수 있다.

반응형

'Dev > Django' 카테고리의 다른 글

Django 디버깅 툴  (0) 2017.01.10
기존 디비를 장고로 Migration 하기  (0) 2017.01.09
django mysql date_format 에러  (0) 2017.01.02
AWS EC2 Django 서버 계속 실행시키기  (0) 2017.01.01
EC2 우분투 Python Django 설치  (0) 2016.12.27