진박사의 일상

[django] 1일차 기본 내용 본문

프로그래밍

[django] 1일차 기본 내용

진박사. 2021. 5. 5. 23:42

장고 프로젝트 생성

$ django-admin startproject (config) .

DB 생성

$ python manage.py migrate

앱 생성

$ python manage.py startapp (app_default)

그 밖의 명령어들

makemigrations : 변경사항 추적, DB 적용할 내용 정리

sqlmigrate : 실행할 SQL 명령문 출력

migrate : 실제 변경사항 DB 반영

slowmigrations : DB 변경사항 목록과 상태 출력

runserver : 테스트 서버 실행

dumpdata : DB 백업

loaddata : DB 복구

flush : DB 테이블만 남기고 내용만 삭제

shell : jango shell을 실행

dbshell : DB 직접 접근 가능한 쉘을 실행. 직접 SQL 구문을 이용해 수정하고 싶을 때 사용

createsuperuser : 관리자계정 생성

changepassword : 계정 비밀번호 변경

 

프로젝트 구조

/(config) : startproject의 인수로 이름붙여진 폴더, 프로젝트 설정파일, 웹서비스 실행 파일 등

  __init__.py : python 2.x와의 호환을 위해 만들어진 파일

  settings.py : 프로젝트 설정 파일

    BASE_DIR : 루트 경로

    SECRET_KEY : 보안을 위한 키값

    DEBUG : 디버그모드 True or False

    ALLOWED_HOSTS : 배포시 * 이나 도메인을 기록해 호스트 설정. (*은 위험해서 사용x)

    INSTALLED_APPS : 설치된 앱의 목록 기록, 관리

    MIDDLEWARE : 요청/응답 메세지 사이에 실행되는 특수 프레임워크

    ROOT_URLCONF : urls.py의 경로

    TEMPLATES : 템플릿 시스템에 관한 설정

    WSGI_APPLICATION : wsgi 어플리케이션 설정

    DATABASES : DB 설정

    AUTH_PASSWORD_VALIDATORS : 비밀번호 검증 설정 (기본 검증 규칙 : 사용자 정보와 유사? 숫자로만? 너무 짧음? 평범함?)

    LANGUAGE_CODE : 다국어 설정

  /venv : 가상환경 폴더

  db.sqlite3 : SQLite3 DB 파일

  manage.py : Django의 명령어를 실행하기 위한 파일

 

디자인패턴 MTV

-다양한 영역이 서로 겹치지 않도록 분할해서 관리할 수 있도록 역할을 나누는 것. 웹에서는 프론트코드(View), 백엔드코드(Controller)의 분리, 로직(Controller)과 DB(Model)의 분리.

1. Model : DB 구조 결정.

2. View(Template) : 사용자에게 보여지는 UI 부분. HTML 코드 등

3. Controller(View) : 기능, 로직에 관한 부분. 데이터 해석 가공 처리 결과 반환 등

 

생성된 앱의 MTV 구조

models.py : DB 명세 고나리. 클래스로 생성되어 클래스=테이블명, 클래스속성=Column. ORM(Object Relational Mapping)이 적용되어 특정 DB의 SQL문을 몰라도 작성 가능.

admn.py : CRUD(Create-Read-Update-Delete) 페이지 대신 jango의 기본 관리자 페이지에서 모델을 확인하거나 기능 추가할 때 사용

views.py : 페이지를 프로그래밍. 클래스형 뷰(Class Based View)와 함수형 뷰(Function Based View)가 있음.

urls.py : 어떤 url으로 view를 실행시킬지 기록.

 

 

 

'배프의 오지랖 파이썬 웹 프로그래밍' 책을 참고하여 공부하고 있습니다.