개요
Django로 만든 웹 애플리케이션에서 DB 테이블의 특정 컬럼을 대상으로 검색하는 기능을 추가했다고 하자. 그렇다면 사용자가 검색어를 입력한 경우와 그렇지 않은 때에 따라서 동적 쿼리를 구성하여 데이터를 조회해야 한다. 이를 Django 뷰 함수에서 구현한다면 검색어 유무에 따라 filter()의 추가 여부를 결정하도록 작성한다.
def search(request):
type_id = request.GET.get(‘type_id’)
state_id = request.GET.get(‘state_id’)
user_name = request.GET.get(‘user_name’)
kwargs = {}
if type_id:
kwargs = {‘equipment_code__exact’: type_id}
if state_id:
kwargs = {‘state_code__exact’: state_id}
if user_name:
kwargs = {‘history__user_name__contains’: user_name}
search_result = BlahBlah.objects.all().filter(**kwargs)
|
cs |
참고
– Python – 파라미터 앞에 *, ** 의 의미? (*args, **kwargs)
참고. 실행환경
– OS : Windows 7 Professional K
– Python : v 2.7.5
– Django : v 1.9.7