Flask(9)
-
CSRF
csrf는 cross site request forgery의 약자이며 간단히 설명하면 Server측에서 의도하지 않은 곳에서 요청을 보내거나 의도하지 않은 곳으로 요청을 보내는 공격 방식이다 이중 의도하지 않은 곳에서 요청을 보내는 경우를 방지할 때 Server측에서 보내는 의도적인 난수를 같이 보내게 해 다른 곳에서 보낸 것인지 아니면 적법한 요청이 맞는 지 확인 할 수 있다 보통 이 난수를 csrf token이라 부르며 flask_wtf 라이브러리를 이용하면 간단하게 구현 할 수 있다 from flask_wtf.csrf import CSRFProtect csrf = CSRFProtect() csrf.init_app(app) 이 방법을 사용하면 자동으로 html 요청에 csrf token을 같이 보내고..
2023.12.11 -
WebSocket
http 통신은 기본적으로 단방향 통신이다 따라서 client에 서버는 요청을 보낼 수 없는데 이를 해결하기 위하여 사용하는 방법중 하나가 websocket이다 python에서 websocket은 socketio 라이브러리를 사용하여 구현 할 수 있다 run.py from web_project.chatting.socket_test import socketio socketio.run(app, port=5000) extension.py from flask_socketio import SocketIO socketio = SocketIO() __init__.py socketio.init_app(app) socket_test.py from flask import Blueprint, render_template, ..
2023.12.11 -
Session login
session은 server측에서 임시적으로 데이터를 저장하는 방법이다 이를 통하여 로그인을 구현 할 수 있는데 방법은 이와 같다 from flask import Blueprint, url_for, render_template, flash, request, session from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.utils import redirect from .form import login_form, coll user_login = Blueprint("user_login", __name__, url_prefix="/login/user") @user_login.route('/test1/',..
2023.12.11 -
MongoDB
mongoDB는 nosql 계열 Data base이고 python에서는 pymongo라는 라이브러리를 이용하면 사용 할 수 있다 from flask_wtf import FlaskForm from wtforms import StringField, validators, PasswordField, BooleanField, TextAreaField from wtforms.validators import DataRequired class board_form(FlaskForm): name = StringField("writer") title = StringField("title",validators=[DataRequired()]) content = TextAreaField("content", validators=[..
2023.12.11 -
Route
Client가 특정 주소로 들어오면 그에 대한 response를 하기 위한 특정 주소를 정하는 방법이다 @app.route('/') def main_page(): return render_template('main.html') 기본적인 사용법은 이렇다 ('/') 서버 주소 뒤에 달리는 주소이다 또한 @app.route('/') def main_page(test): print(test) return render_template('main.html') Client가 접속 요청한 주소 값을 parameter로 받을 수 도 있다 @app.route('/', methods = {'GET',}) def main_page(test): print(test) return render_template('main.html'..
2023.12.11 -
render_template
Flask에서 html 파일을 Client에 보내기 위한 함수다 def main_page(): return render_template('main.html') 기본적으로는 templates 폴더에 있는 html파일의 이름을 입력하면 되며 @main.route('/1234') def arguments() : return render_template('test/argument.html', var = 2) {{var}} html에서 {{}}로 쌓인 값을 추가로 전달 할 수 있다
2023.12.10