Python/python 클론코딩
인스타그램 클론코딩 (검색)
SeongWon
2020. 4. 20. 17:57
반응형
인스타그램에서는 해시태그를 통해서 검색이 이루어진다.
urls.py
re_path(r'^search/$', searchView, name='search'),
searchView.py
def searchView(request):
cursor = connection.cursor()
keyword = request.GET.get("keyword")
if '#' not in keyword:
keyword = '#' + keyword[0:]
search_sql = "SELECT post_id, post_hashtag.hashtag_id"
search_sql += " FROM post_hashtag"
search_sql += " LEFT OUTER JOIN hashtag on hashtag.hashtag_id = post_hashtag.hashtag_id"
search_sql += " WHERE keyword = (%s)"
search_sql_result = cursor.execute(search_sql, (keyword,))
search_sql_datas = cursor.fetchall()
# 검색된 해시태그 게시물 count
count_sql = "SELECT COUNT(post_id)"
count_sql += " FROM post_hashtag"
count_sql += " WHERE hashtag_id = (%s)"
count_sql_result = cursor.execute(count_sql, (search_sql_datas[0][1],))
count_sql_datas = cursor.fetchall()
if len(search_sql_datas) != 0:
search = []
for search_sql_data in search_sql_datas:
# 검색결과 포스팅 이미지
search_result_sql = "SELECT post_img_src"
search_result_sql += " FROM post"
search_result_sql += " WHERE post_id = (%s)"
search_result_sql_result = cursor.execute(search_result_sql, (search_sql_data[0],))
search_result_datas = cursor.fetchall()
row = {'post_img_src': search_result_datas[0][0]
}
search.append(row)
else:
return render(request, 'search.html')
return render(request, 'search.html', {"search": search, "keyword": keyword, 'count':count_sql_datas[0][0]})
보통 인스타그램에서의 검색은 게시글에 등록된 해시태그를 통해 연결되기 때문에 form에서 받는 검색 키워드 데이터에 "#"으로 묶여있지를 판단한 후 View를 작동시킨다.
if '#' not in keyword:
keyword = '#' + keyword[0:]
클론 인스타그램 페이지를 살펴보면 항상 상위에 검색할 수 있는 검색창이 존재한다.
searchView에서 처리한 방식대로 검색창에 검색을 하면
이와같이 검색 키워드가 담겨있는 해시태그로 연결된 게시글들을 모두 가져오게 한다.
반응형