Django for KN(Koinonia)
- 해당 문서는 Django 강의가 리뉴얼 되어 이전 과정들을 복습하는 문서로 작성 됨.
검색지원
- main 과 body의 차이
- body는 페이지 전체를 감싸며 모든 콘텐츠를 포함하는 컨테이너이고, main은 페이지 내에서 주요 콘텐츠를 나타내는데 사용됩니다.
# body와 main 태그 예시
<!DOCTYPE html>
<html>
<head>
<title>페이지 제목</title>
</head>
<body>
<header>
</header>
<nav>
</nav>
<main>
<h1>웹 페이지의 주요 내용</h1>
<p>웹 페이지의 핵심 내용이 여기에 들어갑니다.</p>
</main>
<footer>
</footer>
</body>
</html>
def index(request: HttpRequest) -> HttpResponse:
query = request.GET.get("query", "").strip()
melon_chart_url = "https://raw.githubusercontent.com/pyhub-kr/dump-data/main/melon/melon-20230910.json"
json_string = urlopen(melon_chart_url).read().decode("utf-8")
song_list = [
Song.from_dict(song_dict) for song_dict in json.loads(json_string)
]
if query:
song_list = [
song
for song in song_list
if query in song.name
or query in song.artist_name
or query in song.album_name
]
return render(
request=request,
template_name="hottrack/index.html",
context={"song_list": song_list, "query": query},
)
<form action="" class="col-12 col-lg-auto mb-lg-0 me-lg-3">
<input type="search" class="form-control form-control-dark text-bg-dark" placeholder="검색어를 입력해주세요."
name="query" value="{{ query }}"
<!-- value="{{ request.GET.query }}" 상황에 따라 request.GET으로도 바로 가져올 수 있다 -->
>
</form>