Skip to content

Commit 9e04dd1

Browse files
committed
Add a basic search functionality
1 parent d27dbde commit 9e04dd1

File tree

5 files changed

+582
-3
lines changed

5 files changed

+582
-3
lines changed

diaries/templates/diaries/search.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% extends 'accounts/base_accounts.html' %}
2+
3+
{% block title %}Search results for :{{ q }} - {{block.super}}{% endblock %}
4+
5+
{% block content %}
6+
<h2>Search results for :{{ q }}:</h2>
7+
8+
<h3>Users:</h3>
9+
{% include 'accounts/snippets/profile_snippet.html' with profiles=profiles %}
10+
11+
<h3>Diaries:</h3>
12+
{% include 'diaries/snippets/diary_list_snippet.html' with diaries=diaries %}
13+
{% endblock %}

diaries/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@
3939
])
4040
),
4141
path('create', views.DiaryCreateView.as_view(), name='diary_create'),
42+
path('search', views.SearchView.as_view(), name='search'),
4243
]

diaries/views.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from .forms import DiaryForm, CommentForm
1616
from .models import Diary, DiaryLike, Comment, CommentLike
17+
from accounts.models import Profile
1718

1819

1920
DIARIES_PER_PAGE = 9
@@ -202,4 +203,24 @@ def get_success_url(self):
202203
Diary,
203204
slug=self.kwargs[self.diary_slug_url_kwarg]
204205
)
205-
return diary.get_absolute_url()
206+
return diary.get_absolute_url()
207+
208+
class SearchView(View):
209+
def get(self, request):
210+
q = request.GET.get('q', '')
211+
212+
diaries = Diary.objects.with_likes_and_comments_count().active()
213+
diaries = diaries.filter(title__contains=q).distinct()[:9]
214+
215+
profiles = Profile.objects.filter(
216+
Q(name__contains=q) |
217+
Q(user__username__contains=q) |
218+
Q(description__contains=q)
219+
).distinct()[:9]
220+
221+
context = {
222+
'diaries': diaries,
223+
'profiles': profiles,
224+
'q': q
225+
}
226+
return render(request, 'diaries/search.html', context)

0 commit comments

Comments
 (0)