Flask-Study (19) 썸네일형 리스트형 Ep09 : marshmallow로 Python에서 직렬화/역직렬화 처리하기 직렬화/역직렬화 직렬화 : 어떤 데이터를 다른 곳에서 사용할 수 있게 다른 포맷의 데이터로 바꾸는 것 역직렬화 : 다른 포맷의 데이터로 바뀐 데이터를 원래 포맷으로 복구하는 것 marshmallow 클래스 dump_only : 역직렬화 중에 스킵하는 필드(읽기 전용 필드) load_only : 직렬화 중에 스킵하는 필드(쓰기 전용 필드) many : 객체가 list로 직렬화되기 위해서 객체가 collection인 경우 True로 설정을 해야 한다. marshmallow 사용해보기 - 직렬화 serialization.py를 하나 만들고 pip install -U marshmallow를 터미널에 입력하여 설치해 준다. 만든 serialization.py에 아래 코드를 입력해 준다. 개 클래스를 정의하여 이름.. 플러거블 뷰(Pluggable View) 플러거블 뷰(Pluggable View) 플라스크는 기본적으로 데코레이터와 함수 기반으로 API를 작성하는데 이를 함수 기반 뷰라고 한다. 플러거블 뷰는 함수가 아닌 클래스를 기반으로한 Django 프레임워크의 Generic View에서 영향을 받은 것이다. from flask import Flask, render_template app=Flask(__name__) @app.route('/users/') def show_users(): users = User.query.all() return render_template('users.html', users=users) 위 코드는 일반적으로 Flask 에서 사용하는 함수 기반 뷰이다. 이제 이 코드를 플러거블 뷰로 바꾸어 보자 변형시키는 과정은 우선 Vie.. Ep07 : Flask로 첫 번째 HTTP API 구축하기 HTTP(Hypertext Transfer Protocol)란 무엇인가? HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 레이어 프로토콜로 클라이언트들이 어떻게 서버와 통신할 수 있는지를 정의한 것이기도 하다. 클라이언트와 서버에게 데이터를 요정(request)하면 서버는 요청에 맞는 응답(response)을 클라이언트에게 보내주는 방식이다. 여러가지 HTTP Verbs HTTP는 요청 메소드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. GET -> 특정 리소스릐 표시를 요청, 오직 데이털르 받기만 한다. POST -> 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는데 사용된다. PUT -> 요청된 자원을 수정, 전체적인 정보를 수정할 때 쓰인다. PATCH ->.. Ep06 : 블로그 웹 애플리케이션 개발(3) - 댓글 CRUD, 게시물 삭제 처리, 간단한 contact form 구현하기 Superuser 생성하기 이제는 우리가 회원가입을 하면 기본적으로 is_staff의 기본값이 False로 저장이 된다. 이를 해결하기 위해서 스태프 권한을 가진 유저를 쉽게 만들 수 있도록 작업을 할 것이다. 우선 __init__.py에 아래의 코드를 추가해 준다. 그리고 터미널에서 flask create_superuser를 입력하면 스태프 권한이 있는 사용자를 만들 수 있다. 댓글 작성을 위한 HTML Form 작성하기 우선 post_detail.html에 아래 코드를 추가해 준다. {{ form.csrf_token }} Comment {% for comment in comments %} {{ comment.user }} {{ comment.content }} {% if current_user.use.. Ep05 : 블로그 웹 애플리케이션 개발(2) - 테스트 코드 도입 / 관리자 페이지 / 카테고리 / 게시물 / 다루기 스태프 권한을 위한 모델 수정 관리자 페이지를 아무나 들어갈 수 없기 때문에 권한이 있는 사람만 들어갈 수 있도록 아래와 같이 코드를 수정한다. 테스트 코드로 지금까지 작성했던 코드 테스트하기 tests폴더를 만들어서 그 안에 tests.py 파일을 만들어 아래와 같이 코드를 작성해 준다. 코드를 보면 setUp()은 테스트를 준비하기 위해서 호출하고 tearDown()은 테스트가 끝난 다음에 호출한다. setUp()에서는 테스트를 위한 데이터베이스 파일을 만들고 테스트가 끝나면 tearDown()을 호출하여 데이터베이스를 삭제한다. 테스트 케이스1 - 우리가 만든 모델이 잘 동작하는가? models.py에서 만든 User모델이 잘 작동하는지 확인하기 위해서 유저 모델을 데이터베이스에 넣은 후 잘 저장되.. Ep04 : 블로그 웹 애플리케이션 개발(1) - 회원가입 / 로그인 / 로그아웃 처리 우선 회원가입과 로그인의 html 코드를 보면 둘 다 method 방식이 POST인 것을 확인할 수 있다. 그래서 로그인과 관련된 내용을 다루는 auth.py 파일에서 로그인과 회원가입 부분을 수정해준다. method = ['GET' , 'POST']를 써줌으로써 POST 요청을 처리할 수 있도록 한다. Request로 폼에서 데이터 받아오기 위 코드에서 name 속성은 폼이 제출된 후 서버에서 데이터를 참조하기 위해서 사용된다. 플라스크의 request해준 뒤 데이터를 받아오는 것을 확인해 보기 위해 auth.py를 수정해준다. 여기서 쓰인 request.form.get은 request 한 데이터를 가져오는 기능을 수행한다. 여기서 파라미터가 GET인 경우에는 request.args로 접근하고 POST.. Ep03 : 블로그 웹 애플리케이션 개발(0) - 프로젝트 생성, 패키지 설치, 기본작업 ORM(Object Relational Mapping) ORM이란 Object Relational Mappin의 약자로 객체 관계 매핑이다. 객체 관계 매핑은 객체와 테이블을 자동으로 매핑하는 것을 의미한다. ORM을 사용하면 SQL문을 사용할 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 되어 객체와 테이블 간의 불일치를 해결할 수 있다. 대표적인 ORM은 SQLAlchemy가 있다. SQLAlchemy ORM의 한 종류로 파이썬 코드에서 Flask를 데이터베이스와 연결하기 위해서 사용된다. 데이터베이스 테이블을 프로그래밍 언어의 클래스로 표현하게 해주고, 테이블의 CRUD(Create, Read, Update, Delete) 등을 돕는다. Flask-Login Flask 프레임워크로.. Flask란? Flask란? 파이썬에서 사용 가능한 웹 어플리케이션 프레임 워크이다. Flask는 Werkzeug WSGI와 Jinja2 엔젠에 의해 동작한다. 웹 어플리케이션 프레임워크(Web Application FrameWork) 란? 웹 엔진을 설계할 때 필요한 라이브러리를 모아 놓은 도구, 웹 개방자는 웹 어플리케이션 프레임워크를 사용하게 되면 하위레벨의 설계를 하지 않고 이미 기능을 구현한 라이브러리를 가져와서 간단하게 상위레벨에서 제작이 가능하다. WSGI(Web Server Gateway Interface) 란? 웹 서버와 웹 어플리케이션을 연결할 때 지켜야 하는 규약으로, 웹을 개발할때 반드시 따라야 하는 절차들이 있는데 그 중 하나이다. Python으로 개발되는 모든 웹 어플리케이션은 WSGI를 따라.. 이전 1 2 3 다음