def youtube_search(request): context = dict() q = request.GET.get('q') if q: data = youtube.search(q) for item in data['items']: Video.objects.created_from_search_result(item) # 검색어가 띄워쓰기로 구분되어 있는 경우 모든 검색어를 포함하는 경우(and) / regex 사용 re_pattern = ''.join(['(?=.*{})'.format(item) for item in q.split()]) # re_pattern = (?=.*검색어1)(?=.*검색어2)(?=.*검색어3)... videos = Video.objects.filter( Q(title__iregex=re_pattern) | Q(description__iregex=re_pattern)) # videos = Video.objects.filter(title__contains=q) # 제목에 검색어가 포함되는 경우 # videos = Video.objects.filter(Q(title__contains=q) | Q(description__contains=q)) # 제목과 설명에 검색어가 포함되는 경우 # videos = Video.objects.all() # 검색어가 띄워쓰기로 구분되어 있는 경우 모든 검색어를 포함하는 경우(and) / 원초적인 방법 # for cur_q in q.split(' '): # videos.filter(title__contains=cur_q) # videos.filter(title__contains=검색어1).filter(title__contains=검색어2).filter(title__contains=검색어3).... # # 검색어가 띄워쓰기로 구분되어 있는 경우 검색어중 하나라도 포함하는 경우(or) / regex 사용 # re_pattern = '|'.join(['({})'.format(item) for item in q.split()]) # # re_pattern = (검색어1)|(검색어2)|(검색어3)... # videos = Video.objects.filter(title__regex='{}'.format(re_pattern)) context['videos'] = videos return render(request, 'post/youtube_search.html', context=context)
def youtube_search(request): # YouTube 검색부분을 패키지화 context = dict() q = request.GET.get('q') if q: data = youtube.search(q) for item in data['items']: Video.objects.create_from_search_reslt(item) re_pattern = ''.join(['(?=.*{})'.format(item) for item in q.split()]) videos = Video.objects.filter( Q(title__iregex=re_pattern) | Q(description__iregex=re_pattern)) context['videos'] = videos return render(request, 'post/youtube_search.html', context)
def youtube_search(request, q=None): context = dict() q = request.GET.get('q') if q: data = youtube.search(q) videos = [] for item in data['items']: videos.append(Video.objects.create_from_search_result(item)) # re_pattern = ''.join(['(?=.*{}'.format(item) for item in q.split()]) # videos = Video.objects.filter( # Q(youtube_title__iregex=re_pattern) | # Q(youtube_description__iregex=re_pattern) # ) context['videos'] = videos return render(request, 'post/youtube_search.html', context)
def youtube_search(request): q = request.GET.get('q') context = dict() if q: data = youtube.search(request, q) for item in data['items']: Video.objects.create_from_search_result(item) re_pattern = '|'.join(['({})'.format(item) for item in q.split()]) videos = Video.objects.filter(title__regex=r'{}'.format(re_pattern)) context = { 'videos': videos, 're_pattern': re_pattern, } # q값이 없을 때 else: context = {} return render(request, 'post/youtube_search.html', context)
def youtube_search(request, q=None): """ 유튜브 검색을 라이브러리 형태로 정리 """ context = dict() q = request.GET.get('q') if q: data = youtube.search(q) for item in data['items']: Video.objects.create_from_search_result(item) re_pattern = ''.join(['(?=.*{})'.format(item) for item in q.split()]) videos = Video.objects.filter( Q(title__iregex=r'{}'.format(re_pattern)) | Q(description__iregex=r'{}'.format(re_pattern))) context['videos'] = videos return render(request, 'post/youtube_search.html', context)