Web/Flask(28)
-
[Flask] 2-6 답변 등록 기능 만들기
이번에는 질문에 답 변을 등록하고 보여 주는 기능을 만들어 보자 답변 저장하기 질문 상세 화면에 답변을 입력하기 위한 텍스트 창(textarea)과 버튼을 생성하고, 이 버튼을 누르면 텍스트 창에 입력된 답변이 저장되도록 구현해 보자 답변 등록 버튼 만들기 질문 상세 템플릿에 답변 저장을 위한 form, textarea, input 엘리먼트를 추가하자 답변 저장 URL은 form 태그의 action 속성에 url_for('answer.create', question_id=question.id)로 지정했다 이후 버튼을 누르면 POST 방식으로 이 URL이 호출(submit)될 것이다 코드를 추가한 후 웹 브라우저에서 질문 상세 페이지를 요청해 보면 오류 메세지 화면이 나타날 것이다 이 오류를 해결하려면 "..
2023.12.01 -
[Flask] 2-5 질문 목록과 질문 상세 기능 만들기
존재하지 않는 페이지를 요청받으면 빈 페이지 대신 404 오류 페이지를 표시하도록 다음처럼 detail 함수의 일부를 수정해 보자 핵심 기능인 질문 목록과 질문 상세 기능을 구현해 보자 질문 목록 만들기 플라스크 서버를 실행하고 웹 브라우저에서 localhost:5000에 접속해 보자 게시판 질문 목록 출력하기 이 화면 대신 게시판 질문 목록이 출력되도록 main_views.py 파일을 수정해 보자 index 함수가 문자열을 반환하던 부분을 질문 목록을 출력하도록 변경하면 된다 질문 목록 데이터는 question_list = Question.query.order_by(Question.create_date.desc()) 로 얻을 수 있다 order_by는 조회 결과를 정렬하는 함수 order_by(Ques..
2023.12.01 -
[Flask] 2-4 모델로 데이터 처리하기
질문 답변 게시판을 만들어보려고 한다 질문이나 답변을 작성하면 데이터가 생성되어 데이터를 저장하거나 조회 하거나 수정하는 등의 기능을 구현해야한다 웹 서비스는 데이터를 처리할 때 대부분 데이터베이스를 사용한다 데이터베이스를 사용하려면 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 복잡한 과정이 필요하다 이때 IRM(Object relational mapping)을 이용하면 파이썬 문법만으로도 데이터베이스를 다룰 수 있다 플라스크 ORM 라이브러리 사용하기 파이썬 ORM 라이브러리 중 가장 많이 사용하는 SQLAlchemy를 사용할 것이다 추가로 파이썬 모델을 이용해 테이블을 생성하고 칼럼을 추가하는 등의 작업을 할 수 있게 해주는 Flask-Migrate 라이브러리도 사용해 보자 ORM ..
2023.11.30 -
[Flask] 2-3 블루프린트로 라우팅 함수 관리하기
블루프린트로 라우팅 함수 관리하기 새로운 URL 매핑이 필요할 때마다 라우팅 함수를 create_app 함수 안에 계속 추가해야한다 라우팅 함수가 계속 추가된다면 create_app 함수는 크고 복잡한 함수가 된다 블루프린트(Blueprint)를 사용하여 문제를 해결하자! 블루프린트 생성 create_app 함수 안에 포함된 hello_pybo 함수 대신 블루프린트를 사용할 수 있도록 수정해보자 먼저 pybo 디렉터리 아래에 views 디렉터리 생성 views 디렉터리에 main_views.py 파일을 작성한다 main_views.py 파일에 그대로 옮긴 것이다 애너테이션이 @app.route 에서 @bp.route로 변경되었다 @bp.route 에서 bp객체는 다음처럼 생성되었다 bp 객체 생성시 사용..
2023.11.30 -
[Flask] 2-2 애플리케이션 팩토리
플라스크 앱은 다음 코드에서 처럼 Flask 클래스로 만든 객체를 말한다 app = Flask(__name__) pybo.py를 __init__.py 파일로 변경 앞에서 만든 myproject/pybo.py 파일을 myproject/pybo/__init__.py 파일로 바꿔보자 다음명령으로 myproject/pybo 디렉터리를 만든다 move 명령어로 pybo.py 파일을 pybo/__init__.py 파일로 이동한다 그리고 플라스크 서버를 실행 파일명을 바꿔도 플라스크 서버가 잘 실행된다 기본 앱을 FLASK_APP=pybo로 설정했다 따라서 이전 프로젝트 루트에 있는 pybo.py파일을 카리켰지만 이번에는 pybo 모듈 pybo.__init__.py 파일을 가리킨다 애플리케이션 팩토리 __init__..
2023.11.28 -
[Flask] 2-1 플라스크 기초 다지기
현재 파이보 프로젝트는 projects/myproject 디렉터리 아래에 pybo.py파일만 생성한 상태 규모를 갖춘 플라스크 프로젝트를 만들고자 한다면 프로젝트 구조를 만들어야 한다 프로젝트 구조 앞으로 만들 파이보 프로젝트의 전체구조이다 pybo디렉터리 안에는 __init__.py파일이 pybo.py파일의 역할을 대신할 것이다 데이터베이스를 처리하는 models.py 파일 ORM(object relational mapping)을 지원하는 파이썬 데이터베이스 도구인 SQLAIchemy를 사용한다 SQLAIchemy는 모델 기반으로 데이터베이스를 처리함 모델 클래스들을 정의할 models.py 파일이 필요 서버로 전송된 폼을 처리하는 forms.py 파일 웹 브라우저에서 서버로 전송된 폼을 처리할 때 W..
2023.11.28