하루에는

[Django]장고 쿼리셋으로 검색기능 구현하기 본문

Python, Django

[Django]장고 쿼리셋으로 검색기능 구현하기

에는 2019. 11. 28. 02:02

Overviews

  • 쿼리셋
  • 검색 기능 구현

쿼리셋

  • 모델로부터 전달받은 객체 목록

# views.py에서..

posts = Post.objects.all()
  • Model.objects → 쿼리셋

  • all() → 메소드

메소드 : 쿼리셋을 이용해서 정렬하거나, 기능을 표시하는 방법

메소드

  • create() : 객체 생성

Post.objects.create(title='제목', content='내용')
  • get() : 단일행을 조건을 걸어서 출력, 반환되는 값이 2개 이상일 경우 에러 발생

Post.objects.get(pk=1)
  • filter() : 여러 행을 조건을 걸어서 출력

Post.objects.filter(user='eneun')

 

 

  • order_by() : 정렬

Post.objects.filter(user='예은').order_by('-created_at')

필터링

  • __ (언더바 두 개) 사용

검색 기능 예시

  • search.html에서 Post 객체 제목을 검색
  • result.html에 검색 결과를 띄우기

search.html

<form action="{% url 'result' %}" method='GET'>
	제목 검색: <input type='search' name='query'>
	<input type='submit' value='검색'>
</form>

views.py

def result(request):
	query = request.GET['query']
	if query:
		posts = posts.objects.filter(title__contains=query)
	return render(request, 'result.html', {'posts': posts})

result.html

{% for post in posts %}
	<h4>제목: {{ post.title }}</h4>
	<h4>내용: {{ post.content }}</h4>
{% empty %}
	검색 결과가 없습니다.
{% endfor %}
Comments