들어가기 앞서
- 주관적인 해석, 잘못된 내용, 잘못된 호칭의 사용이 있을 수 있습니다.
- 해당 학습 환경은 아래와 같습니다.
개발 툴 : PyCharm 2023.2.3
사용 DB : DBeaver 23.2.3, DB Browser
웹 브라우저 : 크롬, 엣지
초기 설정
프로젝트 생성
- (파이참 기준) 좌측 상단 – 파일 – 새 프로젝트 생성 - Django - [위치]지정 – 추가설정 [애플리케이션 이름)설정
- 프로젝트 및 애플리케이션 생성 시, 프로젝트이름의 파이썬패키지, 애플리케이션이름의 파이썬패키지 생성.
- manage.py - (venu 터미널) python manage.py runserver – 터미널 출력창 주소 클릭(웹브라우저) -장고 페이지 출력
WSGI 와 ASGI
- WSGI, ASGI는 파이썬에서 CGI를 구현한 것.
- 웹 서버와 앱 코드 사이의 미들웨어(코드읽기, 결과 반환)
WSGI이란?
- webserver gateway interface : 파이썬에서 웹-백엔드 구성시 앱 연결 방법(한 프로세스에서 모든 요청 수신)
- Django와 통신시 ‘프로젝트이름/config/wsgi.py’ 해당 파일 사용
- 동기 함수처리, 여러 작업 처리의 한계
ASGI이란?
-common gateway interface 약자로, 요청의 비동기 처리를 지원한다.
- CGI이란? 정적 HTML 파일로 웹 서비스시 사용하는 요소(요청마다 프로세서 fork())
wsgi.py 실행 시 오류 발생 해결방법
- 디폴트인코딩, 파일인코딩(전역,프로젝트 인코딩) 두 가지 설정 필요
- (파이참 기준) 좌측 상단 – 설정 - 에디터 – 일반 - 콘솔 – 디폴트 인코딩 [UTF-8] 설정
- 설정 – 에디터 – 코드스타일 – 파일 인코딩 – 전역,프로젝트 인코딩 [UTF-8] 설정
Django 프로젝트 생성
Django 탬플릿 생성
Django 탬플릿 생성 방법
- Django 프로젝트 생성 시 추가 방법
- Django 프로젝트 생성 시 추가 방법 - 추가설정 – [애플리케이션 이름]에 생성할 탬플릿 이름 작성
- 기존 탬플릿 복사해 추가 방법
- 우측 상단 프로젝트 이름 클릭 – 구성편집 – 기존 탬플릿 클릭 – 좌측 상단의 복사 아이콘 클릭 – 기존 탬플릿이름(1)로 새로 탬플릿 생성
- 브라우저 바로 실행 체크 시 바로 실행
- 호스트와 포트를 지정가능 설정시 아래와 같은 명령어 입력 필요
(venv) 터미널 : python manage.py runserver 0.0.0.0:5000 # 외부 PC
(venv) 터미널 : python manage.py runserver [내부IPv4주소]:5000 # 내부 PC IP주소 및 포트로 접속 설정
- 접근 가능한 목록 설정 : settings.py - ALLOWED_HOSTS = ['*'] # * 지정 시 모든 IP접근가능
(참고 : 윈도우 CMD 명령어 ipconfig 출력인 ipv4 주소는 외부에서 보이지 않는 사설 아이피)
(참고2 : 처음으로 장고 웹프레임 실행 시, db.sqlite3 라는 DB가 장고 프로젝트 파일의 venv 파일에 생성된다.)
- Django 프로젝트 생성 후 추가 방법
- (파이참기준) venv 터미널에서 python manage.py startapp [애플리케이션이름]
- django-admin startapp aap2 (실행)
Django 프로젝트 내부의 애플리케이션 접속하기
- 먼저 프로젝트이름의 파이썬패키지, 애플리케이션이름의 파이썬패키지의 관계를 알아야 한다.
- DjangoProject2 이름의 Django 프로젝트 파일 내부에는 파이썬 파일들이 존재한다.
- 해당 프로젝트 경로 내부 중 urls.py가 존재(없으면 생성)한다.
- urls.py 파일내부 urlpatterns에서 애플리케이션의 URL을 관리한다. (애플리케이션의 함수 경로도 지정가능)
- 만약 [secure]이름의 애플리케이션 파이썬패키지를 생성한다면, 해당 urlpatterns 에 명시해주어야 접속 가능하다.

- [app1.urls]이 빨간줄로 그어져 있다. 이는 [app1]이름의 어플리케이션 파이썬 패키지 내부에 urls.py 생성이 필요함을 의미하다. 생성해주자.
- [app1] 이름의 애플리케이션 파이썬패키지 내부에도 urls.py 가 생성되었다.
- 애플리케이션 파이썬패키지 urls.py 내부에도 urlpatterns 존재한다. Django 파이썬패키지 urls.py 내부 urlpatterns 에도 애플리케이션의 함수를 명시할 수 는있지만, 너무 많아지지 않겠는가?
- 웹 브라우저에 [127.0.0.1:8000/app1]을 입력하면 애플리케이션 페이지 화면이 나올까?
- 아니다! 아무것도 나오지 않는다. 해당 페이지에 출력할 내용이 없기 때문이다.
- 아래 그림처럼 urlpattern을 명시해주면 경로만 지정이 되는 것이다.

- 애플리케이션 파이썬패키지 내부의 view.py (없으면생성)에서 request 인자로 사용하는 함수를 생성해준다.

- 해당 함수 사용은, requests(웹 페이지 URL에서 [127.0.0.1:8000/app1]를 사용한것)를 인자로 HttpResponse 함수를 리턴한다.
- 해당 함수를 사용하기 위해서는, 애플리케이션 파이썬패키지 urls.py – urlpatterns를 지정해주어야 한다.
(import 모듈도 확인해보자. path, views 사용목적)

-아래 그림과 같이 경로가 생성되어 웹 페이지에서 함수가 호출되어 보인다
