GET 요청이 검색되면 색인 및 검색보기가 모두 작성되어 검색 결과 만 반환됩니다. 그렇지 않으면 모든 레코드가 반환됩니다. 나는 아래에이 견해를 썼다. 그러나 나는 나 자신을 너무 많이 반복하고있는 것처럼 느낀다. 이 코드를 어떻게 슬림하게 만들 수 있을지에 대한 아이디어는 많이 감사 할 것입니다.리팩토링 색인/검색보기
def index(request):
if 'q' in request.GET:
company_list = Company.objects.filter(
Q(company__icontains = request.GET['q']) |
Q(county__icontains = request.GET['q']) |
Q(city__icontains = request.GET['q']) |
Q(product_description__icontains = request.GET['q'])
)
query = request.GET['q']
else:
company_list = Company.objects.all()
paginator = Paginator(company_list, 10)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
companies = paginator.page(page)
except (EmptyPage, InvalidPage):
companies = paginator.page(paginator.num_pages)
if 'q' in request.GET:
return render_response(request, 'database/index.html', {"companies": companies, "query": query})
else:
return render_response(request, 'database/index.html', {"companies": companies})