AI 웹 개발 과정/파이썬 장고 실무 기초

01. 1주차 이론 - 파이썬 기초 문법 / Django 알아보기

만 기 2022. 5. 26. 12:46

 

웹의 동작 순서 및 개념

 

  • 클라이언트 : '요청을 보내는 곳'  주로 '나', '내 컴퓨터' 혹은 '크롬'을 클라이언트라고 한다.
  • 서버 : '요청을 받아서 응답 해 주는 곳'  우리가 인터넷에서 웹페이지, 로그인등의 행동을 하고 난 후에 이루어지는 많은 과정들을 처리 해준다.
  • API : 데이터를 어떻게 주고 받자! 라고 정한 약속 

 

 

1. 페이지를 받는 경우 : HTML, CSS, Javascript가 섞여있는 페이지를 받는 경우 

2. 데이터만 받는 경우 : 페이지나 화면은 크게 필요없고, 데이터만 받고싶은 경우

 

 

 

Pycharm

 

- Python Interpreter : 내가 적은 파이썬 언어를 컴퓨터가 이해할 수 있도록 번역시켜준다.(파이썬 번역기)

 

- Virtual environment (venv) : 각 프로젝트마다 환경을 다르게해주는 파이썬만의 가상환경이다.

 

 

 

Python 데이터 타입

 

1. 변수 : 데이터를 담는 상자

 

  •  변수이름 = 값
  •  my_name = 'paul'

 

2. 숫자형 

 

  • num = 29
  • 음수, 소수점, 사칙연산 가능

 

3. 문자형

 

  • num_string = '124'
  • 작은 따옴표나 큰 따옴표로 묶는다.
  • 숫자형을 따옴표로 묶으면 문자형으로 처리한다.
  • 문자열의 합과 나누기
str_a = 'Love'
str_b = 'Python'
result = str_a + str_b

print(result)

# 실행 결과 : LovePython

a = 'love,eat,coding'
split_result = a.split(',')     # 문자열.split('기준')

print(split_result)

# 실행 결과 : ['love', 'eat', 'coding']

 

  • .split 을 사용해서 문자를 나눌 수 있으며, 문자열.split('기준') 방식으로 작성한다
  • 결과는 리스트의 형태로 저장된다.

 

4. 리스트

 

  • 여러 개의 데이터를 나열하듯이 하나의 변수에 저장하는 방법
  • 대괄호 [ ] 로 묶이고 ' , ' 로 구분한다.
  • 리스트 안의 요소들마다 인덱스 번호를 갖고 있으며, 0 부터 시작한다.
my_fav = ['python','django','web']

print(my_fav[0])
print(my_fav[1])
print(my_fav[2])
print(my_fav[-1])   # 맨 마지막 요소


# 실행 결과
# python
# django
# web
# web

 

  • 리스트 추가
my_fav = ['python','django','web']

my_fav.append('paul')   # 해당하는 리스트의 가장 끝에 추가해준다.
my_fav.append('python')

print(my_fav)

# 실행 결과 : ['python', 'django', 'web', 'paul', 'python']
  • .append 를 사용하여 리스트의 끝에 추가한다. 리스트변수명.append('추가할요소') 방식으로 작성한다.

 

5. 딕셔너리

 

  •  key : value 의 형태로 이루어져있다.
  • 중괄호 {} 로 묶이고 ' , ' 로 구분한다.
  • 데이터 가져오기
my_info = {'name':'paul','phone':'01012341234','birth':'0626'}

print(my_info)
print(my_info['name'])
print(my_info.get('name'))

# 실행 결과
# {'name': 'paul', 'phone': '01012341234', 'birth': '0626'}
# paul
# paul
  • 딕셔너리변수명['key'] 으로 value를 꺼낼수있다.
  • .get('key') 도 같은 기능을 한다.

 

 

 

조건문과 반복문

 

1. 조건문

my_age = 100

if my_age == 100:
    print('저는 100 살입니다.')
else:
    print("거짓말!")
  • 조건에 사용되는 비교연산자
  • < , > , == , != , >= , <=

 

2. 반복문

 

  • 형식

 for 변수 in 문자열,리스트, 튜플 :

    실행 코드

 

  • 예제 1
jumsu_list = [90,100,25,35,40]

for jumsu in jumsu_list:
    print(jumsu)
    
# 실행 결과
# 90
# 100
# 25
# 35
# 40

 

 

  • 예제 2
for i in range(0, 1000):
    print(f'{i}01호')

 

 

 

 

함수와 클래스

 

1. 함수 

 

 새로운 결과물을 만들어 주는 과정

ex) 과일(인자들) - 믹서기(함수) - 과일주스(결과물)

 

  • def 함수명('매개변수'):
       실행 할 문장들
def my_sum_func(a,b):
    result = a+b
    return result

my_sum = my_sum_func(10,20)
print(my_sum)

 

 

2. 클래스

 

빵틀(클래스)과 빵(객체)

클래스 마다 고유한 성격을 가지고 있어서, 클래스에 의해서 만들어지는 객체들은 각각의 성격을 가지게 된다.

 

class myBakery:
    title = ''
    time = ''
    taste = ''

cookie = myBakery()      # 클래스 대입
cookie.title = '머핀'     # 클래스에 속성들을 넣어줌
cookie.time = '1h'
cookie.taste = '초콜릿'

print(cookie)
print(cookie.title)

# 실행 결과
# <__main__.myBakery object at 0x000001F69B8F6520>
# 머핀

 

 

 

 

Python의 Web Framework

 

- 프레임워크 : 개발을 도와주는 하나의 틀 

 

- 파이썬 웹 프레임워크의 종류

  • 최소한의 기능들만 제공하는 형태
    • Flask
    • Pyramid
  • 이미 많은 기능들을 제공하고 있는 형태
    • Django : 많은 개발자들이 웹서비스를 개발하기 위해서 사용하는 요소들을 공통적으로 추려서 제공한다.

 

 

 

 

 

 

 

Django 알아보기

 

- django 의 일하는 방식 : MVT 패턴

 

  • M (Model)
    • 데이터베이스의 모델 (ORM : 데이터베이스와 소통하는 방식중 하나)
    • 저장되고 사용되는 데이터의 형태
  • T (Template)
    • 사용자에게 보여지는 부분
    • 화면
  • V (View)
    • 실질적으로 프로그램이 동작하는 부분
    • url을 요청하고 응답하는 그 사이에 일어나는 '서비스'들이 존재하는 곳

 

 

- ORM 

  • 데이터베이스 형태를 클래스로 나타낸다.
  • 데이터베이스를 다루기 위해서 사용되는 '쿼리' 를 작성하지 않아도 데이터 CRUD 를 도와준다.
  • 간단 예
class Post:
    id = IntegerField()
    title = CharField()
    author = CharField()
    context = TextField()

 

 

 

 

Django 프로젝트 만들기

 

- Django 프로젝트 구조

 

 

  • 하위 mySpartaSns 폴더 : 프로젝트의 가장 핵심적인 세팅을 담당한다.
  • settings.py : 프로젝트 전체 환경설정 담당
    • INSTALLED_APPS - 장고에 설치 된 앱들
    • MIDDLEWARE - 사용자 요청/응답 사이에서 작동하는 시스템들
    • TEMPLATES - 나의 html파일을 자동으로 인식
    • DATABASES - 내가 사용할 데이터베이스 연동 설정
    • AUTH_PASSWORD_VALIDATORS - 패스워드 보안 수준 검증
    • LANGUAGE_CODE - 화면에 어떤 언어를 보여줄것인지
    • TIME_ZONE - 우리가 어떤 시간에 있는지
  • urls.py : 프로젝트의 API 담당. 접속할 수 있는 url 주소를 만들어주고 관리해주는 공간.
from django.contrib import admin
from django.urls import path

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

 

 

 

 

 

Django 페이지 띄우기

 

- views.py

from django.http import HttpResponse


def base_response(request):
    return HttpResponse("안녕하세요! 장고의 시작입니다!")
    
# HttpResponse()는 괄호 안에 있는 내용을 인터넷 창 화면에 보여주는 역할을 한다.

 

 

- urls.py

from django.contrib import admin
from django.urls import path
from . import views		# 현재 폴더에서 views.py 파일 가져온다.

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

# test/ url로 views파일의 base_response 함수와 연결 시켜줌

 

- 로컬호스트 주소 : http://127.0.0.1:8000/test/

 

 

 

 

Django html파일 띄우기

 

- templates 폴더에 html 파일 생성

 

- views.py

from django.http import HttpResponse  # 괄호안의 내용을 전달해준다.
from django.shortcuts import render  # HTML 파일을 보여준다.


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


# html 파일 보여줌
def first_view(request):
    return render(request, 'my_test.html')

render 를 사용해서 templates 에 있는 html 파일을 찾아서 보여준다.

 

- urls.py

from django.contrib import admin
from django.urls import path
from . import views     # 현재 폴더에서 views 파일 가져온다.


urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/', views.base_response, name='first_test'),  # test/ url로 views파일의 base_response 함수와 연결 시켜줌
    path('first/', views.first_view, name='first_view'),
]

firtst/ 주소로 views 파일의 first_view 함수 실행

 

 

- 로컬호스트 주소 : http://127.0.0.1:8000/first