DX Data School

Django 활용하여 Web Programming 실습

Kim J 2024. 1. 30. 10:10

1. 개요

1) 패키지 이름 : django

설치 : pip install django

- 가상환경에서 설치하면 가상환경에서만 사용할 수 있고 가상환경이 아닌 곳에서 설치하면 가상환경에서는 사용할 수 없다.

2) 개발 방식

> MTV : 웹 프로그래밍을 할 때 역할 별로 3가지 영역을 분리해서 구현

테이블(데이터)을 정의하는 Model 그리고 사용자가 보게 될 화면의 모습을 정의하는 Template 과 애플리케이션의 제어 흐름 및 처리 로직을 정의하는 View로 구분해서 개발을 진행

Model : 데이터 처리 관련 부분

Template : 출력 관련 부분 - 최근에는 이 영역은 거의 사용하지 않음, 요즘 서버에서 랜더링 하지 않음

View : 클라이언트 요청을 처리하는 부분

> MVC : 장고 이외의 영역에서 사용하는 용어

Model

View : 출력, Template ( djngo의 view와 전혀다름 주의)

Controller : 사용자의 요청과 처리하는 부분 (Business Logic과 Common Concern)을 연결해주는 것

3) 가상환경을 이용해서 django 프로젝트를 만들고 실행

> 가상 환경 생성

python -m venv 가상환경 이름 -> 가상환경이 없다고 나오면 python3 이라고 입력

> 가상 환경 활성화

Windows

- 가상환경이름\Scriptws\activate

Windows 가 아닌 경우

- source 가상환경이름/bin/activate

가상환경이 활성화 되면 맨 앞에 (가상환경이름) 으로 프롬프트가 시작된다.

가상환경이 활성화 된 모습

> 가상 환경에 django 설치

pip install django

Django 설치

> 프로젝트 생성

- 작업의 기본단위로 1개를 생성

django-admin startproject 프로젝트이름 생성할 디렉토리 경로(.을 입력하면 현재 디렉토리로 설정)

django-admin startproject jsite .

성공되면 현재 디렉토리에 프로젝트 이름으로 디렉토리가 생성되고 디렉토리 안에 몇 개의 파일이 자동으로 생성된다. 프로젝트는 디렉토리 안에 settings.py 가 생성된다.

프로젝트 생성

> 애플리케이션 생성

- django의 실행 코드를 작성하는 단위로 1개 이상 생성

python manage.py startapp 앱이름

python manage.py startapp jweb

성공되면 앱이름의 디렉토리가 생성되고 디렉토리 안에 몇 개의 파일이 자동으로 생성된다.

애플리케이션 생성

> 실행

python manage.py runserver [IP주소:포트번호] [ 생 략 가 능 ]

IP 주소와 포트번호를 생략하면 127.0.0.1 : 8000 으로 실행

IP 주소는 외부에서 접속하도록 하고자 하면 0.0.0.0 이나 컴퓨터의 실제 IP를 적어줘야 한다.

실행을 시켜보자

뭐가 된 듯 하다. 링크가 만들어 졌다..!

저 링크에 접속하면 이렇게 Django 화면이 나온다.

이제 이 화면을 수정하면 되는 것이다!!

룰ㄹ..루 언제하딩..

여러분은 못 들어와요 나만 볼 수 있어 이건, 내 컴퓨터로 혼자만 접속하는 IP거덩요..!!

이게 뭐냐면 직전시간에 했던 상태코드다.

200번대가 나왔기 때문에 접속이 성공했다는 말이다!! 몰랐으면 그냥 지나갔을거 같은데 딱 보니까 딱 보였다! 룰루

주요 상태 코드

200 : OK

201 : Created - 요청은 처리되었고 새로운 리소스를 생성

202 : Accepted - 요청은 접수했지만 처리가 완료되지 않음

301 : Moved Permanently - 지정한 리소스가 새로운 URI로 이동

303 : See Other - 다른 위치로 요청

307 : Temporary Redirect - 임시로 리다이렉션 요청이 필요

400 : 잘못된 요청

401 : 권한이 없음

403 : 권한 처리 이외의 사유로 리소스에 대한 엑세스가 금지

404 : 지정한 리소스를 찾을 수 없는 경우

500 : 내부 서버 오류

502 : 게이트웨이나 프록시 서버 이상

503 : 서비스 제공 불가

요기 까지 했으면 이제 기본 구조에 대해 알아본다!

4) 기본 구조

> 프로젝트 디렉토리/settings.py

나의 경우 프로젝트 이름이 jsite 이기 때문에 jsite/settings.py 이다.

프로젝트 설정에 관련된 파일이다.

아래 코드들이 적혀있다.

ALLOWED_HOSTS = []

실제 배포할 컴퓨터의 IP를 등록하는 영역으로 '*' 으로 하면 아무데서나 배포가 가능하고 실제 IP를 작성하면 그 IP를 가진 컴퓨터에서만 배포가 가능하다.

INSTALLED_APPS

실행할 애플리케이션을 등록하는 영역으로 애플리케이션을 생성한 경우 애플리케이션 이름을 등록해주어야 한다.

MIDDLEWARE

Django 애플리케이션이 요청을 처리하기 전에 수행하고자 하는 작업이 있을 때 작업을 기재하는 영역으로 필터의 역할을 수행한다.

DATABASES

사용 할 데이트베이스를 설정하는 영역으로 기본 코드는 Python 안에 있는 sqlite3에 접속하도록 설정되어 있다.

TIME_ZONE

시간 대역을 설정하는 영역으로 "Asia/Seoul"로 변경해야 한다. 베이스가 유럽이라 설정하지 않으면 시간이 차이난다.

> urls.py

- 사용자의 요청(url)을 처리할 함수나 클래스를 설정하는 파일

기본적으로 admin에 대해 코드가 저장되어 있다. 그래서 내가 설정한 페이지 url 뒤에 /admin 을 추가해 접속할 경우, 해당 설정이 실행된다.

from django.contrib import admin from django.urls import path urlpatterns = [ path("admin/", admin.site.urls), ]

설정한 url : 127.0.0.1:80/admin 을 실행시키면...!

짜라잔,,,,,,, 관리자 사이트 로그인 화면이 나온다.

관리자 계정이 없는디? 하나 만들어 봅시다

> views.py

- 실제로 요청을 처리할 함수나 클래스를 작성하는 파일

> models.py

- 사용할 데이터베이스 모델을 만드는 파일

5) 프로젝트의 모델 변경 내용을 데이터베이스에 반영

python manage.py migrate

이 명령을 맨 처음 실행시키면 유저 정보나 로그인에 관련 된 테이블이 자동으로 생성된다.

admin, auth, session 관련 테이블 생성

authentication(인증) : 로그인

authorization(인가) : 권한

session : 클라이언트의 정보를 서버에 저장하는 것, 대부분의 경우 session에 로그인한 유저 정보를 저장하는 경우가 많다. session은 브라우저 창을 닫으면 자동으로 소멸된다.

그럼 명령어를 실행시켯!!!!!

( 댕꿀이자냐 )

이까지 했으면 이제 관리자 계정을 만들어 보자

6) 관리자 계정 생성 및 접속

python manage.py createsuperuser < 관리자 계정 생성 명령어

명령어를 입력하면 ID / PW를 입력하라고 한다. 그럼 설정해주면 된다~

띠용 master 생성 끝!

비밀번호를 쳤는데 안보여서 쵸큼 당황했는데 일부러 안보여주는 것이었다. 보안 확실하다..

그럼 관리자 계정 로그인하러 가보쟈고~~

다시 127.0.0.1/admin 접속 하고 로그인 창에 내가 만든 관리자 계정을 입력하고 로그인 하면

관리자 페이지가 나온다!

오......... 신기해 신기해 아주 신기해.......

그럼 이제 관리자는 됐고, 그냥 url에 접속 했을 때 기본적으로 보이는 메인 페이지를 어떻게 설정해야 하는지 알아보도록 하자!

7) 메인 페이지 작성

> 애플리케이션/views.py 에 작성한다.

내가 만든 애플리케이션은 jweb이니까 jweb/views.py 에 작성하면 된다!

index와 request는 다른 이름을 사용해도 된다.

from django.http import HttpResponse
# Create your views here.
# 이 함수를 실행하면 () 안의 내용을 클라이언트에게 전송
def index(request):
return HttpResponse("<h3>안녕하세용~ 반가워용~<h3>")

> 프로젝트/urls.py 에 작성한다.

나는 뭐라고? jsite/urls.py 에 ~ 작성한다고~

from django.contrib import admin
from django.urls import path
from jweb import views # jweb 이라는 디렉토리에 있는 views 파일을 가져오기

urlpatterns = [
path("admin/", admin.site.urls),
path("",views.index) # views에 있는 index 함수를 실행한다는 뜻!
]

이 까지 설정하면 이제 127.0.0.1 에 접속하면 쪼꼼 허접하긴 하지만 내가 위에 설정한

<h3> 크기의 안녕하세용~ 반가워용~ 이 출력된다. 잘 나오는지 한번보자

까꽁,,, ^^;;;;

성 . 공 .

 

> 에러가 발생한 경우 !

프로젝트의 settings.py 파일에 INSTALLED_APPS에 자신의 앱을 등록했는지 확인한다 !

코드에서 앱 이름이나 함수 이름을 정확히 입력했는지 확인한다 !

오후에 이어서 계속됩니다 밥 맛나게 먹어요 안냥~~~~~~~~

 

'DX Data School' 카테고리의 다른 글

데이터베이스 연동  (0) 2024.01.30
Django 활용하여 Web Programming 실습 2  (0) 2024.01.30
Python Web Programming  (0) 2024.01.30
Python 과 Mongo DB 연동  (1) 2024.01.30
Python의 Exception Handling(예외처리)  (1) 2024.01.30