Web/Flask(28)
-
[Flask] 3-8 모델 수정하기
회원가입, 로그인, 로그아웃 기능이 완성돼서 질문, 답변을 "누가" 작성했는지 알 수 있게 됐다 이제 기능을 조금씩 다듬어서 완벽하게 만들어 보자 여기서는 Question, Answer 모델을 수정하여 "글쓴이"에 해당하는 user 속성을 추가할 것이다 SQLite 설정 수정하기 SQLite 데이터베이스는 ORM을 사용할 때 몇 가지 문제점이 있다 이것은 SQLite 데이터베이스에만 해당하 PostgreSQL이나 MySQL 등의 다른 데이터베이스와는 상관없는 내용이다 pybo/__init__.py 파일을 다음과 같이 수정해보자 이와 같이 수정하면 데이터베이스의 프라이머리 키, 유니크 키, 인덱스 키 등의 이름이 변경되므로 flask db migrate 명령과 flask db upgrade 명령으로 데이터..
2023.12.02 -
[Flask] 3-7 로그인과 로그아웃
여러 사람이 사용하는 게시판 서비스를 만들 것 이기 떄문에 로그인, 로그아웃은 필수 기능이다 로그인과 로그아웃 기능을 만들어보자 로그인 폼 아래와 같이 로그인시 사용할 UserLoginForm을 만들자 username, password 필드를 추가하고 각각 필수 입력 항목으로 지정해 주었고 username의 길이는 3~25자로 제한했다 로그인 라우팅 함수 로그인을 수행할 라우팅 함수를 다음처럼 작성해 보자 /login/ URL과 매핑되는 login 함수를 생성했다 login 함수는 signup 함수와 비슷하게 동작한다 POST 방식에는 로그인을 수행하고 GET 요청에는 로그인 화면을 보여준다 POST 요청에 의해 로그인 하는 과정을 알아보자면 폼 입력으로 받은 username으로 데이터베이스에 해당 사용..
2023.12.02 -
[Flask] 3-6 회원가입
이번에는 회원가입 기능을 구현해 보자 회원가입 기능은 웹 사이트에서 핵심이다 회원 모델 지금까지는 질문, 답변 모델만 사용했다면 이제 회원 정보를 위한 모델이 필요하다 회원 정보 모델에는 최소한 아래와 같은 속성이 필요하다 속성 설명 username 사용자 이름(ID) password 비밀번호 email 이메일 pybo/models.py 파일을 열어 앞에서 정의한 속성을 바탕으로 User 모델을 작성하자 id는 자동으로 증가하는 User 모델의 기본 키이다 username, password, email에는 null값을 허용하지 않도록 nullable=False로 설정했다 username, email에는 unique=True를 지정했다 unique=True는 "같은 값을 저장할 수 없다"를 뜻한다 이렇게 ..
2023.12.02 -
[Flask] 3-5 질문에 달린 답변 개수 표시하기
질문 목록에서 "해당 질문에 달린 답변 개수"를 표시해 보자 코드의 양은 많지 않지만 "게시판 서비스를 더욱 서비스답게 만들어 주는 기능"이다 답변 개수는 아래처럼 게시물 제목 바로 오른쪽에 표시하자 {% if question.answer_set|length > 0 %}로 답변이 있는 경우를 검사하고 {{ question.answer_set|length }}로 답변 개수를 표시했다 이제 질문 목록 페이지로 이동하면 답변이 있는 질문은 제목 오른쪽에 빨간색 숫자가 표시될 것이다 정상적으로 동작 확인
2023.12.02 -
[Flask] 3-4 게시물에 일련번호 추가하기
게시물 번호 문제 계속해서 서비스를 개선해 보자 현재 질문 목록 화면을 유심히 보면 페이지마다 게시물 번호가 항상 1부터 시작되는 문제가 있다 페이지를 이동해 봐도 게시물 번호는 1부터 시작한다 두번째 페이지로 이동하더라도 여전히 게시물 번호가 1부터 시작된다 이 문제를 해결해 보자!! 게시물 번호 공식 만들기 만약 질문 게시물이 12개라면 1페이지에는 12번째~3번째 게시물이, 2페이지에는 2번째~1번째 게시물이 역순으로 표시되어야 한다 질문 게시물의 번호를 역순으로 정렬하려면 아래와 같은 공식을 적용해야 한다 항목 설명 번호 최종 표시될 게시물 번호 전체 게시물 개수 데이터베이스에 저장된 게시물 전체 개수 현재 페이지 페이징에서 현재 선택한 페이지 페이지당 게시물 개수 한 페이지당 보여줄 게시물의 개..
2023.12.02 -
[Flask] 3-3 템플릿 필터 직접 만들어 보기
이번에는 템플릿 필터를 직접 만드는 방법에 대해서 알아보자 템플릿 필터는 이미 전체 답변 개수를 구할 때 해보았다 {{ question.answer_set|length }}와 같이 템플릿에서 사용한 객체에 파이프라인 문자 |를 붙여 필터 기능을 한다 ( {{ question.answer_set|length }}의 length는 전체 답변 개수를 구할 때 사용한 템플릿 필터이다) 질문 목록 화면의 작성일시를 보자 작성일시의 날짜값은 datetime 객체이다 현재 질문 목록 템플릿에서는 datetime 객체를 문자열로 표시했으므로 2023-12-02 16:56:38.933828과 같은 값으로 표시된다 대부분의 게시판 서비스에서는 시간을 이런 식으로 표시하지 않는다 템플릿 필터를 사용하면 이런 출력 문자열을 ..
2023.12.02