- 복습용으로 작성한 문서
- tutorial 코드와 실제 과제 구현 코드는 상이함
- 빠진 부분 : settings.py 에서 secrets.json으로 DB pwd와 django secret key 분리함
-
데이터베이스 생성
- 쿼리 작성 후 번개 모양 누르면 아래 액션 수행 확인 가능
- Schemas 누르면 생성된 데이터베이스 확인 후 더블클릭함
-
테이블 생성
- 같은 방식으로 요구된 테이블 세 개 더 만듦
-
record 추가하기
- 같은 방식으로 나머지 테이블에도 record 추가함
- 테이블 우측 클릭해서 select rows 누르면 넣은 record 확인할 수 있음 mySQL에서 boolean type은 tinyint(1) 형식으로 정의됨 (true 1, false 0)
-
먼저 파이썬으로 가상환경 진입하고, 장고 설치해야 함
-
루트 디렉터리 내 장고 프로젝트를 생성 django-admin startproject (프로젝트 이름)
-
앱 생성 : django-admin startapp (앱 이름-여기서는 myApp) 앱 생성 시 settings.py에 앱 추가하기
-
python manage.py migrate 로 앱들이 필요로 하는 테이블들을 생성 (테이블 : 데이터베이스에서 데이터를 저장하기 위한 데이터 집합의 모음)
-
모델 생성하거나 변경한 경우 테이블 작업 파일부터 만들어야 함makemigrations 실행해서 장고가 테이블 작업 수행하기 위한 파일 생성
- 명령 실행 후 myApp/migrations/0001_initial.py 파일이 자동 생성됨
- 변경 사항 없을 시 No changes detected
- 이제 migrate 실행해서 장고가 등록된 앱에 있는 모델을 참조해 실제 테이블을 생성
-
DB Browser for SQLite 에서 실제 테이블명을 확인할 수 있지만 개발에서는 필요 없음
-
migrate 실행 시 어떤 쿼리문이 실행되는지는 sqlmigrate 명령으로 알 수 있음 (python manage.py sqlmigrate myApp 0001)
-
-
개발 서버 구동 : python manage.py runserver
- 서버 종료 : ctrl+c
- 로컬 서버로 실행됨 : 127.0.0.1:8000 (localhost:8000 이랑 같음)
- 서버 접속 시 띄울 페이지 매핑은 config/urs.py에서 설정
- config/urls.py 에서 from myApp import views와 path('myApp/', views.index), 추가
- 이때, urlpatterns에 들어가는 url에서 호스트명과 포트 번호는 둘 다 장고 실행 환경에 따라 변하는 값이므로 생략됨.
- 슬래시를 붙이면 사용자가 슬래시 없이 주소를 입력해도 장고가 자동으로 슬래시를 붙여줌(url 정규화 기능)
- 장고 프로젝트 디렉터리를 settings.py에서 BASE_DIR 변수에 저장
- config/urls.py는 실제로 (장고프로젝트 경로)/config/urls.py에 해당
-
html 문서를 담을 templates 폴더 생성 마찬가지로 settings.py의 TEMPLATES에 경로를 추가함
-
데이터베이스 연결, 데이터베이스 비밀번호 입력해야 함
-
views.py 작성
-
데이터베이스 접속하기 위한 모듈로 django.db의 connection 사용 settings.py에 입력한 데이터베이스 정보로 접속하게 됨
-
cursor() : SQL 문을 수행하고 결과를 얻는 데 사용하는 cursor 객체 생성
-
이런 식으로 기본 틀 잡고 각각 sql 쿼리 작성하기
-
Find the average hard disk size of PCs
-
Find the average speed of laptop for each maker
-
Find the price of laptop, which is the only laptop model of the maker
-
Find the model and price of the printer of the highest price of each maker
- views.py 참고
-
view들에 대한 접근을 갖도록 urls.py 에서 매핑 전체 구조는 좌측과 같음