PDJJ14 WIKI : Django + Python 으로 요구사항 추적 페이지 생성

1. 참고 페이지

2. 필요 프로그램 설치

2.1. Python

  • Python 홈페이지에서 최신 Python Interpreter 설치
    • 설치 시, Python Path 추가하는 체크박스 반드시 체크!!!
  • Windows PowerShell 에서 'python' 입력 시에 아래와 같이 나와야 정상 설치된 것임

2.2. Django

  • Python 설치 후에 진행 가능함
  • Windows PowerShell 실행하고 아래 코드 실행
    • pip install django

2.3. Sublime Text

  • 폴더 단위로 파일을 열어서 편집할 수 있는 프로그램
  • Python 코드 스타일 바로 인식하여 적용됨
  • https://www.sublimetext.com/

3. Web site 설치 및 실행

3.1. 설치

  • Windows PowerShell 실행
  • 사이트 코드를 관리할 폴더를 생성하여 이동
  • 아래의 코드 실행
    • django-admin startproject $site_name
    • $site_name: 생성할 사이트의 이름을 입력
  • $site_name 에 입력한 값으로 폴더가 생성되고 그 구조는 아래와 같음

3.2. 실행

  • Windows PowerShell 에서 'manage.py' 파일이 존재하는 폴더 경로로 이동
  • 아래의 코드 실행
    • python manage.py runserver
  • 아래와 같이 실행됨으로 확인
  • chrome 에서 'localhost:8000' 으로 접근 시 아래와 같이 페이지 출력됨을 확인
  • chrome 에서 'localhost:8000/admin' 으로 접근 시 아래와 같이 페이지 출력됨을 확인

4. MS SQL 연결

  • Windows PowerShell 에서 아래 코드를 통해 드라이버 설치
    • pip install django-pyodbc-azure
  • setting.py 에서 아래와 같이 설정
    • DATABASES = {
      	# 'default': {
      	# 'ENGINE': 'django.db.backends.sqlite3',
      	# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
      	# }
      	'default': {
      		'ENGINE': 'sql_server.pyodbc',
      		'NAME': 'DB명',
      		'USER': '사용자',
      		'PASSWORD': '패스워드',
      		'HOST': '호스트명',
      		'PORT': '1433',
      		'OPTIONS': {
      			'driver' : 'SQL Server Native Client 11.0',
      			'MARS_Connection' : True,
      			'driver_supports_utf8' : True,
      		},
      	}
      }

5. App 관리

5.1. App 추가

  • Windows Powershell 에서 추가하고자 하는 App 을 추가하는 코드 실행
    • App 이란 기존의 어플리케이션을 뜻하는 것이 아니라 해당 웹페이지에서 개별적으로 접근 가능한 페이지라고 이해하는 것이 맞다고 봄
    • python manage.py startapp $appName
  • 위와 같이 코드를 실행하면 manage.py 파일이 포함되어 있는 폴더와 같은 레벨에 $appName 에 해당하는 폴더가 생성되고 해당 폴더 안에 기본 py 파일들(__init__, admin, apps, models, tests, urls, views)이 생성됨

5.2. Model 설정

  • app 폴더 내부의 models.py 파일을 수정해야 함
  • 각 테이블을 하나의 class 로 구현 
  • class 내부에 테이블의 컬럼에 해당하는 변수를 선언
  • 생성한 class 의 내부에 Meta class 를 생성하여 table 의 이름 및 표출 정보를 구현
  • __str__ 함수를 이용하여 record 를 출력할 때, 표기할 형식을 결정
  • Model 샘플 코드
    class Subsystem(models.Model):
        acronym = models.CharField(unique=True, max_length=16)
        sysname = models.CharField(max_length=32)
        description = models.CharField(max_length=256)
        remarks = models.CharField(max_length=256, blank=True, null=True)
    
        class Meta:
            db_table = 'subsystem'
            verbose_name = '서브시스템'
            verbose_name_plural = '서브시스템 목록'
    
        def __str__(self):
            return f'{self.acronym}-{self.sysname}'

5.2.1. DB 적용

  • Windows Powershell 에서 Migration 파일을 생성하는 코드 실행 ($appName 을 생략하면 모든 app 을 대상으로 수행됨)
    • python manage.py makemigrations $appName
    • 위의 코드를 실생하면 app 폴더 내부에 migrations 라는 폴더가 생성되고 그 안에 DB 에 업데이트를 수행할 정보가 기록된 파일이 생성됨
  • Windows PowerShell 에서 실제 migration 을 수행하는 코드 실행 ($appName 을 생략하면 모든 app 을 대상으로 수행됨)
    • python manage.py migrate $appName
    • 위의 코드를 실행하면 DB 에 실제 테이블이 생성됨
      • 위의 코드를 실행하기 전에는 DB 에 변화가 생기지 않음
  • 기타 관련 명령어
    • # 마이그레이션 파일 생성
      python manage.py makemigrations $appName
      
      # 마이그레이션 적용
      python manage.py migrate $appName
      
      # 마이그레이션 적용 현황
      python manage.py showmigrations $appName
      
      # 지정 마이그레이션의 SQL 내역
      python manage.py sqlmigrate $appName $migrationName

6. Admin 페이지 접속

  • admin 사용자 만들기
    • 프로젝트 폴더로 이동
    • python manage.py createsuperuser 실행
    • 유저 이름과 email, password 설정