본문 바로가기
부트캠프TIL, WIL/AI웹개발(스파르타코딩클럽)

[AI웹개발][20일차TIL] VS code에서 Django사용법, 쿼리란?, ORM이란? 장고에서 웹의 동작 순서 이해하기, Web Framework란?

by 우지uz 2023. 4. 5.

 

목차


  1.  Django 기초반에서 배울 것
  2.  주차별 학습 내용
  3.  VS Code 에서 Django 설치 및 세팅하기 
    (출처 : https://www.youtube.com/watch?v=a9jGLTbLR0g,
    https://hanmari-code.tistory.com/11 참고했습니다. )
  4.  웹의 동작 순서 및 개념
  5.  Web Framework와 ORM이란??
  6.  장고를 사용한 화면 띄우기
  7.  화면에 글자 띄우기
  8.  화면에 내가 만든 HTML띄우기

1. 장고 기초반에서 배울 것 
1. 파이썬 활용에 대한 두려움 없애기
2. HTML/CSS 를 자세히 살펴보기 보다는
     Django에서 "사용한다" 라는 것에 주목하면서 적용하는 것에 집중
3. Python 의 framework 인 Django 사용하는 방법 배우기

2. 주차별 학습 내용
1주차 - 파이썬 문법과 장고의 구조, 명령어 배우기

2주차 - Django ORM과 Django Admin, Django 사용자 관리
>> Django 가 데이터베이스와 소통하는데 사용하는 방법
>> Django에 큰 힘을 실어주는 Admin Tool을 사용해, 사용자를 관리해보기
>> 사용자 모듈을 직접 만들어서 회원가입/로그인 기능을 만들어 보기

3주차 - Django 사용자 모듈 확장하기, 글 읽기/ 쓰기/ 지우기
>> Django 에서 제공하는 사용자 모델을 이용하기 
>>sns 에 있는 글 읽기/쓰기/지우기 기능 만들어보기

4주차 - Django 팔로우/팔로잉 만들기, 기능 활용하기 
>>다른 사용자들과 친구를 맺는 기능 만들기

5주차 - 서비스 배포해보기 

3. VS Code 에서 Django 설치 및 세팅하기 

(출처 : https://www.youtube.com/watch?v=a9jGLTbLR0g,
https://hanmari-code.tistory.com/11 참고했습니다. )

MAC 에서 Django 를 설치입니다
(**Window와 명령어 차이가 존재한다는 것을 인지 해주시길 바랍니다. )

VS Code 에서 폴더를 열고 , 가상 환경을 먼저 설정한다 .
python3 -m venv venv
source venv/bin/activate

- 파이썬 터미널에서  pip list 확인
: pip list 혹은 pip3 list 입력


파이썬 터미널에서  Django를 설치한다.
: python -m pip install django

파이썬 터미널에서 django의 버젼을 확인하는 법
: python3 -m django --version

파이썬 터미널에서 django 프로젝트 폴더를 생성하는 방법
: django-admin startproject <프로젝트명>
ex) my_project 라는 폴더로 django 프로젝트를 생성하고 싶으면 
>> django-admin startproject my_project 를 입력한다. 

 


예시) <프로젝트명> = mysite
외부 <프로젝트명>  - 프로젝트의 컨테이너 입니다. * 원하는 이름으로 변경 가능
내부 <프로젝트명> - 프로젝트의 실제 파이썬 패키지 입니다. (예시 : mysite.urls)
<장고에서 서버실행하는 방법>
python3 manage.py runserver # 127.0.0.1:8000
python3 manage.py runserver 5000 # 127.0.0.1:5000
python3 manage.py runserver 192.168.0.10:5000 # 192.168.0.10:5000

template 생성 및 HTML 적용하기는 다음에. 


** [Python] pip 개념 및 설치 방법(pip, pip3)
(https://heytech.tistory.com/318참조!)
Pip Installs Packages의 약자

Python 패키지를 설치하고 관리하는 패키지 매니저(Package Manager)

MacOS에서 brew, node의 npm, yarn, Linux에서 apt와 같은 개념의 패키지 매니저

** pip 업데이트 방법 : pip install --upgrade pip

4. 웹의 동작 순서 및 개념
  • 클라이언트
    : 요청을 보내는 곳이며. 내 컴퓨터, 혹은 크롬이나 엣지, 사파리와 같은 것들을 클라이언트라고 합니다. 
  • 서버 
    : 요청을 받아서, 응답을 해주는 곳이며, 로그인, 회원가입, 새로운 페이지를 넘어가거나 할 때, 
    이루어지는 많은 컴퓨터적 과정들을 처리해주는 곳입니다. 
  • API(Application Programming Interface(애플리케이션 프로그램 인터페이스))
    : 데이터를 주고 받는 방식에 대한 약속입니다. 
    애플리케이션이라는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다.
    인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다.

  • 웹 동작 순서 (스파르타 강의 참조)

스파르타코딩캠프 강의 참조

여기서 요청 하는 사람 : 클라이언트 
데이터를 주는 사람 : 서버이며
주고 받는 방식에 대한 약속이 API이다. 
서버는 다음과 같이 구성되어 있다. 

5.  Web Framework와 ORM이란??
  • Web Framework란??
    : 개발을 도와주는 하나의 주조 틀이다. 
    - 결과물을 일정한 형태로 만들 수 있도록 도와준다. 

  • Python 에서 Framework 의 종류는 ??
  • 크게 두 가지로 종류를 나눈다.
    - 최소한의 기능만 제공하는 형태
    - 많은 기능들을 이미 가지고 , 제공하는 형태
    - Django 와 Flask, Pyramid 비교

스파르타 강의 참조

  • Django 의 MVT 패턴 이해하기. 
    - MVT 패턴이란 , 장고가 일하는 방식을 보여준다. 
    그림을 보면서 흐름을 파악하면, 장고를 사용하는데에 큰 도움이 될 것이다. 

스파르타 강의자료 참조

 

ORM이란??
- ORM은 Object Relational Mapping(객체-관계-매핑)의 약자

ORM은 객체와 데이터베이스의 관계를 매핑(연결)해주는 도구이다. (중간 역할을 해주는 도구임)
ORM은 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 도구이다.
- Django 의 ORM은 Python이다. 파이썬 언어로, 객체와 데이터를 연결해주고 있다. 
- 쿼리를 따로 작성하지 않아도 된다. 

 

여기서 *쿼리란 ? 
- 쿼리(Query)란
쉽게 이야기해서 데이터베이스에 정보를 요청하는 것입니다.

- 쿼리(Query)는
웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청
  (주로 문자열을 기반으로 한 요청)에 의한 처리입니다.

- 쿼리(Query)는 대개
데이터베이스로부터 특정한 주제어나 어귀를 찾기 위해 사용됩니다.
주제어가 검색엔진의 검색필드 내에 입력된 다음, 그 내용이 웹 서버로 넘겨집니다.

간단한 홈페이지를 개발할 경우 대부분의 홈페이지는 게시판 혹은 방명록 정도의 데이터를
보관할 수 있는 형태의 "DB"를 구축하게 됩니다.
이러한 "DB"는 개발자의 의도에 따라 약간씩 다르기는 하지만
대부분 유사한 형태의 구조를 가지는 테이블을 포함하게 되는데,
여기서 사용자 혹은 관리자들은 이러한 테이블에서
특정 조건에 해당하는 자료를 조회하거나 출력하는 등의 작업을 합니다.

이렇게 데이터가 입력된 DB에서 원하는 조건의 데이터를 가져오려면
특정한 구조의 프로그램언어(DB언어)를 사용하게 되는데
이러한 DB용 언어를 SQL이라고 합니다.

이러한 SQL언어는 대부분의 DB가 95% 이상 되는 호환성을 가진 언어로 이루어져 있으며
이러한 언어로서 특정DB에서 원하는 조건의 데이터를 조작하는 언어의 집합(문장)을 쿼리(Query)라고 합니다.

이러한 쿼리(Query)는 DB를 조작하는 여러 가지 형태로 표현될 수 있으며
데이터를 다루는 프로그램에서는 필수적인 요소입니다.
쿼리(Query)를 바로 번역을 하면 '질의'라고 해석이 됩니다.

DB서버가 구동이 되고 있는 환경에서(Oracle, Cubrid, MsServer, MySQL, Tibero, Altibase 등)
DB에 대해 명령문을 작업하게 되는데 이 때의 명령문을 쿼리(Query)라고 생각하면 됩니다.

■ DB(DataBase, 데이터베이스): 데이터를 정리하여 보관하고 있는 저장소
■ DB Server: 데이터를 정리하여 보관하고 있는 저장서버
■ Query 란, DB에 명령을 해야할 때, 명령을 하는 명령문(문장)이다.
     특정 DB에서 원하는 조건의 데이터를 조작하는 언어의 집합이다. (결국 같은말)

★ 내부 과정 예시 ★
사용자 -> 질의 ( 쿼리문 ) -> DB서버
사용자 <- 결과 <- DB서버

 6. 장고를 사용한 화면 띄우기

VS Code 에서 Django 프로그렘 세팅을 마치셨다면 아래와 같은 폴더들이 생성 되었을 것입니다. 

다음과 같이 파일들의 역할들을 이해하시면 됩니다. (스파르타 강의자료)

  • VS code 파이썬 터미널에서 장고 서버를 열어 준다. 
    : python3 manage.py runserver 입력

http://127.0.0.1:8000/ 를 커맨드 키를 누르고, 클릭한다.
비어있는 장고 페이지가 나온다면 성공!

 


 7. 화면에 글자 띄우기

나의 화면을 만들어 보자 . 
- mysite 폴더에 views.py 를 생성한다. 

views.py에 들어가서 다음을 붙여 넣는다. 우리가 쓰고 싶은 내용을 인터넷 창 화면에 보여주는 함수이다 !

from django.http import HttpResponse

def base_response(request):
return HttpResponse("안녕하세요! 장고의 시작입니다!")

urls.py 를 다음과 같이 고친다. 

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
path('admin/', admin.site.urls),
]

로컬 호스트 주소를 검색창에 입력하고, 아래의 화면이 나오면 성공이다. 
- http://127.0.0.1:8000/test/

내 페이지에 글 입력하기.


8. 화면에 내가 만든 HTML띄우기

template 폴더에 HTML을 생성합니다. 이름은 my_test.html로 하겠습니다. 파일 확장자는 당연히 html입니다. 

아래의 html을 아래와 같이 작성했습니다. 

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>테스트 페이지</title>
</head>

<body>
<h3>테스트 페이지 입니다! 장고를 사용했어요!</h3>
</body>

</html>

views.pydp 아래의 코드를 추가합니다. 

- 여기서 render 라는 함수는 template에 있는 html파일을 찾아서 보여주는 역할을 하는 함수입니다. 

from django.shortcuts import render


def first_view(request):
       return render(request, 'my_test.html')

urls.py 도 바꾸어 줍니다. 

urlpatterns = [
path('admin/', admin.site.urls),
path('test/', views.base_response, name='first_test'),
path('first/', views.first_view, name='first_view'),
]

다음의 주소로 접속해서 우리가 만든 html파일이 보이면 성공입니다. 

- http://127.0.0.1:8000/first

html을 가지고 장고 페이지 띄우기