프로그래밍/파이썬

[Django 기초] 파이썬 장고 - 개념 정리 및 웹 페이지 만들기

매 석 2022. 10. 11. 20:57
반응형

 

1. 웹 프레임워크란?

- 웹 서버를 구현하기 위한 목적으로, 해당 기능들을 모아놓은 것이다.

- 파이썬에는 장고와 플라스크가 있다.

 

2. 장고와 플라스크의 차이점

- 장고 : 대규모 웹 사이트 개발 -> 공통 개발 구역을 패키지로
- 플라스크 : 파이썬 마이크로프레임워크 -> 직접 구현, 자유도 높음
 
즉 장고는 익숙한 개발자가 큰 규모의 프로젝트를 편리하게 도와주고,
플라스크는 작은 규모의 프로젝트를 처음부터 끝까지 원하는 방향으로 진행할 수 있다.
 
 

3. 장고 설치 및 기본 명령어 정리

#장고 웹 플레임워크 설치
pip install django

#장고 프로젝트 생성
django-admin startproject [프로젝트 이름]

#장고 서버 실행하기
python manage.py runserver 0.0.0.0:8000

#장고 애플리케이션 생성하기
python manage.py startapp [애플리케이션 이름]

#관리자 생성
manage.py createsuperuser

#sqllite3 데이터베이스에 변경 사항을 적용한다.
python manage.py migrate

 

4. 장고 특징 - MTV(Model-Template-View)

- 웹 프로그램 개발할 때 흔히 MVC따라 설계, 장고에서 그와 비슷한 MTV를 사용한다.
Model - 데이터베이스에 데이터를 읽고 쓰는 역할
Template - 사용자에게 보여주는 부분 렌더링 처리
View - URL 요청에 맞게 함수를 호출하고 처리된 데이터를 템플릿에 전달

 

5. 장고 특징 - ORM(Object relational mapping)

- 파이썬 객체와 관계형 데이터베이스를 연결해준다.
- 기존은 SQL 쓰지만, ORM 기법에서는 models.py 파일에 모델 클래스를 정의하면 이에 대한 매핑 테이블이

  DB에 자동으로 생성된다.  또한 모델 클래스의 속성은 해당 테이블의 칼럼으로 매핑되기 때문에, 

  객체를 통해 DB에 접근하기 편리하다.

 

6. 장고의 구성

- 장고는 웹 사이트를 프로젝트 단위로 구분하고,

  프로젝트를 구성하는 모듈화된 프로그램들을 

  애플리케이션이라고 부른다. 

  즉 애플리케이션이 모여서 프로젝트가 된다.

  EX) Investar(프로젝트) - index(애플리케이션)

 

- 프로젝트는 애플리케이션의 위에 있는 개념으로

  여러 설정 사항 등을 다루고 있다.

 

- 애플리케이션은 위에서 다루었던 MTV를 다룬다.

  즉 models.py에서는  ORM 기법을 사용하고, 

  templates에서는 사용자에게 보여줄  html과

  정적 파일(사진 등)을 관리하고,

  views.py에서는  URL 요청에 맞게 함수를 호출하고

  처리된 데이터를 템플릿에 전달하는 역할을 한다.

 

 

 

 

 

 

 

 

 

 

 

7. 장고- 프로젝트 개념 설명

- settings.py : 프로젝트와 관련된 설정을 할 수 있다.

EX) ALLOWED_HOSTS = ['127.0.0.1','localhost','[서버ip]'] - 외부 접속 허용

       ROOT_URLCONF -> '최상위 프로젝트.urls' - URLConf 설정

 

- urls.py : URL-View를 매핑하고 URLConf를 추가할 수 있다.

from django.contrib import admin
from django.urls import path, re_path
from hello import views 
from index import views as index_views

urlpatterns = [
    #admin으로 접속 시 관리자 페이지 호출 -URLConf
    path('admin/', admin.site.urls),
    #정규표현식을 이용하여 URL-View 매핑
    re_path(r'^(?P<name>[A-Z][a-z]*)$', views.sayHello),
    #index로 접속 시 메소드를 통해 index.html 호출 - URLConf
    path('index/', index_views.main_view),
]

1. from 애플리케이션명 import views -> views 임포트
2. django.urls.re_path - URL에 대한 뷰 처리를 추가
3. path와 달리 re_path는 정규표현식을 사용해 URL 패턴 처리 가능
4. [A-Z][a-z]* 는 첫 글자가 반드시 대문자이고 그 이후부터는 소문자가 나오거나 없는 경우이다. -> 만족하면 sayHello 함수 실행
5. URL을 통해 입력받은 영문 이름을 Hello 메시지와 함께 출력하려면 (?P<이름>패턴) 이용하여 '이름' 파라미터로 뷰에 넘겨주어야 한다.

 

8. 장고- 애플리케이션 개념 설명

- views.py 

from django.shortcuts import render

# Create your views here.
def main_view(request):
    return render(request, 'index.html')

- 위의 urls.py의 마지막 줄의 main_view와 연결되는 내용이다.

  즉 URL에 index로 접속하면 index.html을 불러온다.

from django.shortcuts import render
from django.http      import HttpResponse

# Create your views here.
def sayHello(request, name):
    html = "<h1>Hello, {}!</h1>".format(name)
    return HttpResponse(html)

- 위의 urls.py의 2번째 줄의 sayHello와 연결되는 내용이다.

  즉 URL 정규표현식을 만족하면 sayHello를 실행한다.

 

- templates

html 파일은 templates 디렉터리에 넣어야 불러와진다.

static에는 css와 사진 등의 정적인 데이터를 넣는다.

(참고로 html에는 템플릿 태그를 달아야 static의 파일을 불러올 수 있다.)
EX)  <img src={% static "index/Django_Logo.jpg" %}/></a>

        <link rel ="stylesheet" href={% static "index/style.css" %} />

 

9. 장고 실행하여 웹 페이지 접속

1. python manage.py runserver 0.0.0.0:8000을 입력한다.

2. localhost:8000/index (urls.py에서 설정한 경로)로 접속

 

그럼 위와 같이 아까 templates과 staic에 넣었던

사진과 스타일 등이 그대로 나오게 된다.