[SK shiedlus Rookies 23]Python(7-3)_24.10.23

박소민·2024년 11월 5일

Python

목록 보기
23/23

client가 서버로 데이터 전송방식

  • method = get 방식

  • url?키=값&키=값

  • http 프로토콜 바디(고정 사이즈)를 타고 데이터 전송

    • client ➜ server

    • 크기 제한 있음

    • IF body 사이즈가 크다 ➜ 분활하여 전송 (내부적 처리)

    • 데이터 크기가 작고, 보안에 취약

                ↪️ So. 노출되도 문제 없는 데이터만 전송

get 방식

  • get방식으로 전달된 data 획득시 ➜ request.args.get('키') 입력
  • request : 클라이언트가 서버에 특정 페이지를 요청한다
    ➜ 클라이언트가 서버로 보낸 모든 데이터는 request객체가 가진다
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def home():
	page_no = request.args.get('pno')
    doc_id = request.args.get('did')
    return f'홈페이지 {page_no} / {doc_id}'
    
if__name__=='__main__':
	app.run(debug=True) 

약식 로그인

로그인 페이지

  • get 방식 = 기본형
  • render_template : 템플릿을 처리해주는 함수
from flask imort flask, request, render_template

@app.route('/')
def home():
    return f'홈페이지'
    
if__name__=='__main__':
	app.run(debug=True) 

🔽🔽🔽

#❓ 1개의 url에서 메서드를 다르게 두어 여러기능을 처리
@app.route('/login', method = ['GET','POST'])
def home():
    #❓ templates > login.html을 읽고 랜더링(SSR, 서버측에서 페이지 완성)해서 ➜
        client에 전송
    return f'login.html'
    
if__name__=='__main__':
	app.run(debug=True) 

index.html_ code 참고

🔽🔽🔽

UI 깨짐

디자인 입히기

로그인 처리

  • post 방식
  • 로그인 처리.part
    • 사용자 ID(e.amil), 비번(암호화X) 획득
    • 정석 -> DB 조회, JWT처리
    • 약식 -> 고정값 문자열과 비교
    • 판단 -> 실패/성공
      • 성공: 새션 생성,...-> 홈페이지 이동
      • 실패: 경고창 뛰우기 -> 되돌아가기

  • [참고] html주석 <!~...~>
## << html을 읽어서 뿌린다 >>
@app.route('/login', method = ['GET','POST'])
def login():
    if request.method == 'GET'  # 로그인 화면.part
    return render_template('login_html')
	else:  # 로그인 처리.part
    	return "로그인 처리"
if__name__=='__main__':
	app.run(debug=True) 

  • form 전송시, input 태그 내 반드시 name 속성(키 값)이 있어야함

                            ↪️ *PW 동일하게 name = "upw"삽입
@app.route('/login', method = ['GET','POST'])
def login():
    if request.method == 'GET'  # 로그인 화면.part
    return render_template('login_html')
	else:
    	uid = request.form('uid')  ❓
		upw = request.form('upw') #❓ 로그인 처리.part
   		
        #약식 판단
        if uid and upw: 
        	if uid == 'a@a.com' and upw == '1':
    			return redirect ('/') #성공 #홈페이지 포워딩
			else:  #경고창 => 이전화면으로 돌아가기  #실패
				return render_template('alert.html', msg="로그인 정보 확인")
        else:
        	return render_template('alert.html', msg="비정상 접근")
if__name__=='__main__':
	app.run(debug=True) 

flask 일반적 구조

/
L static    #정적 파일(이미지,..)
	L auth.js
    L logo.png
L templates
	L login.html  #html파일
L *.py  #파이썬
L db    #응용해서 위치 시킴
	L *.py
  • 파이썬 DB 연동 : flask <-> pymysql <-> mariadb
  1. mariadb > data table 생성
import pymysql as my

1-1. 테이블 생성 및 조회

2. 마무리 참고_code

0개의 댓글