내 탐색 막대에 search
이라는보기로 쿼리를 보내는 검색 상자가 있습니다. 정확히 같은 DB 조회를 요구하는, 내가 그 일에 대한 몇 가지 정보를 표시하려면,django 리디렉션 후 반복되는 데이터베이스 검색을 피하십시오
def search(request):
try:
search_string = request.GET['q']
except MultiValueDictKeyError:
raise Http404
try:
Thing.objects.get(name=search_string)
return HttpResponseRedirect('/thing/{}'.format(search_string))
except Thing.DoesNotExist:
# do something else...
을 내 thing
보기에서 : search
에서 나는 않을 경우 DB가 검색 일이 존재하는지 확인하고 /thing/name
로 리디렉션 확인 :
def thing(request, name):
thing= Thing.objects.get(name=name)
# do something with thing...
제 질문은 어떻게 동일한 DB 조회를 수행하지 않고도 리디렉션을 수행 할 수 있습니까? 어떻게 든 조회를 캐시 할 수 있습니까?
감사 합니다만, 나는 이런 종류의 일이 얼마나 오래 걸릴지에 대한 어떤 직관도 아직 가지고 있지 않습니다. 거대한 DB를 조회하는 경우에도 단순히 디스크에서 값을 읽는 것과 비슷한 시간이 걸릴 것입니까? – Ferguzz
@Ferguzz 나는 두 가지를 테스트하거나 비교하지 않았으므로 잘 모른다. 내가 아는 것은 검색보기에서 카운트를 잡는 것이 get()보다 빠르다는 것입니다. 또 다른 일은'name' 필드가 데이터베이스 (https://docs.djangoproject.com/en/dev/ref/models/fields/#db-index)에 의해 색인되어 있는지 확인하는 것입니다. – hellsgate