본문 바로가기
Python

[파이썬] 웹 프로그래밍

by AI미남홀란드 2021. 2. 7.
728x90

웹 클라이언트 부분을 보통 프론트 엔드 서버 부분을 백엔드라고 한다. 요즘 화두가 되고 있는 프론트엔드 개발자.. 네이버 , 카카오 , 쿠팡 등 많은 프론트엔드 개발자들을 고용하고 있다는데 , 그만큼 날이 갈 수록 심미적고 , 창의성 높은 눈에 보여지는 프론트엔드를 중요시하는게 아닐까 생각한다. 그래서 문과 출신이라던지 예대 출신의 개발자들이 늘어나고 있고 그 예술적인 감각이나 창작물은 공대생보다 더 뛰어나서 거기에 개발이란걸 이식해서 더 아름다운 결과물을 만들어 내는거 같다.

 

Client : 서비스를 제공받아서 실행

Front : 응용 프로그램 ( PC , IOT , SmartPhone )           1개로 할 수 없을까? 그때 사용하는 언어 JavaScript(facebook , google)

            웹 브라우저                                                      PC는 언어가 다양 , IOT는 3가지 정도(C++,Python,Java) , 

         (java script , html ,CSS)

        

                             

Server : 서비스를 제공


** 파이썬 웹 서버 프레임 워크

1. flask

-> 아무런 설정없이 유저가 직접 설정을 해가면서 만드는 프레임 워크

2. djanggo

-> 기본 설정을 제공하는 프레임워크

-> 몇가지 설정을 변경하면 간단하게 웹 서비스를 구현할 수 있습니다.

 

** flask

1. 특징

-> 파이썬 기반의 micro framework

-> 서버용 Library 인 Werkzeug 와 데이터를 랜더링하기위한 jinja2 template를 이용

-> 설치 : pip install flask

-> 가이드 문서 : flask-docs-kr.readthedocs.io/ko/latest/

 

2. 서버 구동

from flask import flask

app = flask(__name__)

 

@app.route('/요청주소')

def 함수이름():

           return 출력할 내용이나 뷰 템플릿

 

 

#서버 구동 

app.run(host='0.0.0.0', port=포트번호 , debug = 디버깅 여부 : bool)

#포트번호는 생략하면 5000

#디버깅 여부는 학습이나 개발할 때는 True 배포 및 운영할 때는 False

 

 

2) 브라우저를 구동해서 localhost:5000 번으로 입력

-> hello flask

 

3) 제 컴퓨터의 IP 는 192.168.10.68 입니다

 

4) app.run에서 debug= true 를 추가하면 코드를 수정하면 자동으로 서버가 재시작 됩니다.

 

3. 사용자 요청 처리

 

@app.route('/url')

def 함수명():

          return 출력할 내용

 

1) URL의 일부분을 변수로 처리

@app.route('/url/<변수명>'):

def 함수명(변수명):

            변수명이 뒤의 데이터가 됩니다.

-> 변수명 앞에 자료형을 기재할 수 있습니다.

 <int : su> : 정수로 변환


from flask import Flask

 

app = Flask(__name__)

 

@app.route('/')

def index():

    return 'hello flask'

@app.route('/news')

def news():

    return 'news 요청'

@app.route('/blog/<num>')

def blog(num):

    return num+ '을 요청했습니다'

#서버 구동

app.run(host='0.0.0.0')

 


-> 브라우저에서 아래 주소를 입력하고 확인

/news

/blog/숫자나 문자열

 

2) 요청 방식을 구분해서 처리

-> 웹 클라이언트가 서버에게 필요한 데이터를 넘겨주는 방법은 2가지 패턴이 있는데 1개인 경우는 최근에는 URL에 포함시켜 넘겨주는 경우가 많고 다른 하나는 Query String 의 형태로 넘겨주는 것입니다.

-> query string 은 파라미터라고도 부르는데 넘겨주는 방식이 2가지 get

GET : URL 뒤에 파라미터를 붙이는 방식입니다. 보안 성능이 떨어지고 전송하는 데이터의 길이가 제한적이지만 자동 재전송 기능이

있습니다. 요청에 응답이 오지 않을때 일정 시간 동안 계속 요청을 전송하는 데이터의 길이에 제한이 없지만 자동 재전송 기능이 없습니다.

삽입 , 삭제 , 갱신 요청은 POST 로 수행

password , textarea , file 이 있는 경우는 반드시 post로 전송

 

-> flask에서는 요청을 처리하고자 할 때 app.route 에 처리할 요청 방식을 methods 라는 파라미터에 배열로 설정

 

POST(PUT - 수정 , DELETE - 삭제 )

 

3) Template 엔진

-> 서버가 처리한 데이터를 html 에서 넘겨서 출력하기 위한 방법

-> 최근에는 이 방식을 선호하지 않고 서버를 만들 때 뷰와 독립적인 데이터를 넘겨주고 웹 페이즈는 ajax는 이 데이터를 받아서 출력하는 구조를 많이 사용

->jinja 템플릿 엔징을 사용

 

4. 클라이언트가 전송한 정보 읽기

-> url의 일부분을 사용하는 경우 어떻게 처리

-> get 방식의 처리

-> post 방식의 경우는 file 이 있을 때 와 없을 때로 나누어서 처리

-> header(인증 정보를 많이 포함) 와 cookie (클라이언트에 계속해서 필요한 정보를 저장하는 목적의 파일) 처리

 

->request 객체를 이용해서 읽음

    form : POST 방식으로 넘어온 폼 데이터

    args : GET 방식으로 넘어온 데이터

   values : form 과 args 모두

  cookies : 쿠키 정보

 headers : 헤더 정보

    files : 파일에 대한 정보

728x90

'Python' 카테고리의 다른 글

파이썬 위치 기반 매개변수, 키워드 기반 매개변수  (0) 2024.03.07
[파이썬] python review  (0) 2022.10.25
[파이썬] MySQL  (0) 2021.02.06
[파이썬] 기본 네트워크 & 데이터 처리  (0) 2021.01.31
[파이썬] 자료규조  (0) 2021.01.31