<form method="get" action="{{ url_for('search') }}">
<select name="search_type">
<option value="title">제목</option>
<option value="content">내용</option>
</select>
<input type="text" name="query" required>
<button type="submit">검색</button>
</form>
검색을 위해서 board.html 에 검색 form을 추가하였다.
@app.route('/search')
def search():
search_type = request.args.get('search_type')
query = request.args.get('query')
conn = connectsql()
cursor = conn.cursor(pymysql.cursors.DictCursor)
if search_type == 'title':
cursor.execute("SELECT * FROM posts WHERE title LIKE %s", ('%' + query + '%',))
elif search_type == 'content':
cursor.execute("SELECT * FROM posts WHERE content LIKE %s", ('%' + query + '%',))
posts = cursor.fetchall()
conn.close()
return render_template('search_results.html', posts=posts)
검색을 위해 search 링크를 만들었다.
제목으로 검색할건지, 내용으로 검색할건지에 대한 정보를 search_type으로 받고 검색을 해서 posts에 담는다.
posts를 search_results.html 로 보내준다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>검색 결과</title>
</head>
<body>
<h1>검색 결과</h1>
{% for post in posts %}
<h2><a href="{{ url_for('read', id=post.id) }}">{{ post.title }}</a></h2>
{% endfor %}
<a href="{{ url_for('board') }}">목록으로</a>
</body>
</html>
search_results.html 파일에서는 그냥 받은 posts의 목록을 띄워준다.
'웹개발' 카테고리의 다른 글
게시판(flask)-관리자 글 삭제 권한 (0) | 2023.10.31 |
---|---|
게시판(flask)-파일 업로드, 다운로드 (0) | 2023.10.31 |
게시판(flask)-댓글, 추천 (0) | 2023.10.31 |
게시판(flask)-CRUD (0) | 2023.10.31 |
게시판(flask)-회원가입, 로그인, 비밀번호 유효성 검사 (0) | 2023.10.31 |