웹 개발(25)
-
[Flask] 3-14 검색
문답변에 대한 데이터가 계속 쌓여가는 게시판이므로 검색기능은 필수라고 할 수 있다 검색의 대상은 제목, 질문의 내용, 질문 작성자, 답변의 내용, 답변 작성자 정도로 하면 적당할 것이다 "파이썬"이라고 검색을 하면 "파이썬" 이라는 문자열이 제목, 내용, 질문 작성자, 답변, 답변 작성자에 존재하는지 찾아보고 그 결과를 화면에 보여주어야 한다 검색 기능을 위해 잠시 데이터베이스 지식을 공부할 필요가 있다 조인, 아우터조인, 서브쿼리에 대해서 알아볼 것이다 조인 조인은 동일한 데이터로 연결된 두 모델을 함께 조회할 때 사용한다 예를들어 작성자 이름이 "홍길동"인 질문을 검색할 수 있는 방법에 대해서 생각해 보면 절차 1. User 모델에서 username이 '홍길동'인 데이터의 id 조사하기 절차 2. 절..
2023.12.03 -
[Flask] 3-13 마크다운 기능 적용하기
질문이나 답변을 작성할 때 일반적인 텍스트 외에 글자를 진하게 표시하거나 링크를 추가하고 싶을 수도 있다 '마크다운'이라는 글쓰기 도구를 이용하면 이런 것들을 쉽고 간단하게 표현할 수 있다 마크다운을 적용해 보자 리스트 목록을 표시하기 위해 다음처럼 작성한다 위 문자열을 마크다운 해석기가 HTML로 변환하면 실제 화면에서는 아래와 같이 보인다 순서가 있는 목록을 표시하려면 아래처 작성한다 결과는 아래와 같다 강조 작성한 글자를 강조 표시하려면 강조할 텍스트 양쪽에 **를 넣어 감싼다 결과는 아래와 같다 링크 HTML 링크는 다음처럼 [링크명](링크주소) 규칙을 적용하여 생성한다 결과는 아래 같다 소스코드 소스코드는 백쿼트 ` 3개를 연이어 붙여 위아래로 감싸면 생성할 수 있다 결과는 아래 같다 인용 인용..
2023.12.03 -
[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