분류 전체보기(47)
-
[Flask] 3-12 앵커
몇가지 문제점을 해결해 보려고한다 발견된 문제점은 답글을 작성하거나 수정한 후에 항상 페이지 상단으로 스크롤이 이동되기 때문에 본인이 작성한 답변을 확인하려면 다시 스크롤을 내려서 확인해야 한다는 점이다 HTML에는 URL 호출시 원하는 위치로 이동시켜 주는 앵커(anchor) 태그가 있다 HTML 중간에 라는 앵커 태그가 있다면 이 HTML을 호출하는 URL 뒤에 #flask 라고 붙여주면 해당 페이지가 호출되면서 해당 앵커로 스크롤이 이동된다 답변등록, 답변수정, 답변추천시 앵커 태그를 이용하여 원하는 위치로 이동할 수 있도록 수정해 보자 앵커 엘리먼드 먼저 답변 작성, 수정, 추천시에 이동해야할 앵커 엘리먼트를 질문 상세 템플릿에 추가하자 답변이 반복되어 표시되는 for 문 바로 다음에 와 같이 앵..
2023.12.03 -
[Flask] 3-11 추천 기능 추가하기
이번에는 질문과 답변에 "추천(좋아요)" 기능을 추가해 보자 모델 변경 질문이나 답변에 "추천"을 적용하려면 질문 모델과 답변 모델에 "추천인" 이라는 속성을 추가해야 한다 하나의 질문에 여러명이 추천할 수 있고 한 명이 여러개의 질문에 추천할 수 있으므로 이런 경우에는 "다대다(N:N)" 관계를 의미하는 ManyToMany 관계를 사용해야 한다 question_voter SQLAlchemy에서 ManyToMany 관계를 적용하는 방법에 대해서 알아보자 먼저 다음과 같은 question_voter 테이블 객체를 작성해보 ManyToMany 관계를 적용하기 위해서는 db.Table을 통해 N:N 관계를 의미하는 테이블을 먼저 생성해야 한다 question_voter는 사용자 id와 질문 id를 쌍으로 갖는..
2023.12.03 -
[Flask] 3-10 게시물 수정 & 삭제
이번에는 작성한 게시물을 수정 & 삭제할 수 있는 기능을 추가할 것이다 진행하다 보면 "비슷한 기능을 반복해서 구현한다는 느낌"을 받아 조금 지루할 수 있다 게시물 수정 & 삭제 기능은 게시물 작성만큼 중요하다 수정 일시 질문, 답변을 언제 수정했는지 확인할 수 있도록 Question 모델과 Answer 모델에 modify_date 속성을 추가하자 modify_date 속성에는 nullable=True로 null을 허용하도록 했다 수정일시는 수정이 발생할 경우에만 생성되므로 null을 허용해야 한다 모델이 변경되었으므로 migrate, upgrade 명령을 수행하자 질문 수정 버튼 질문 상세 화면에 다음과 같이 질문 수정 버튼을 추가하자 질문 수정 버튼은 로그인한 사용자와 글쓴이가 같은 경우에만 보여야 ..
2023.12.03 -
[Flask] 3-9 글쓴이 표시하기
질문과 답변 등록시 글쓴이 정보를 저장하는 환경까지 만들어 보았다 게시판의 게시물에는 "글쓴이"를 표시하는 것이 일반적이다 질문 목록, 질문 상세 화면에 user 속성을 이용하여 글쓴이를 표시해 보자 질문 목록에 글쓴이 표시하기 글쓴이를 표시하기 위해 테이블에 글쓴이 항목을 추가하자 글쓴이를 추가했다 그리고 th 엘리먼트를 가운데 정렬하도록 tr 엘리먼트에 text-center 클래스를 추가하고 제목의 너비가 전체에서 50%를 차지하도록 style="width:50%"도 지정해 주었다 이어서 for 문에도 글쓴이를 적용하자 {{ question.user.username }}를 삽입하여 질문의 글쓴이를 표시했다 리고 테이블 내용을 가운데 정렬하도록 tr 엘리먼트에 text-center 클래스를 추가하고 제..
2023.12.03 -
[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