我在这里做正确的事吗?
在我的views.py中,这就是搜索功能的样子:
from django.shortcuts import render, redirect
def search(request):
query = request.GET.get('q', '')
if query:
queryset = (
Q(title__icontains=query) |
Q(authors__first_name__icontains=query) |
Q(authors__last_name__icontains=query)
)
results = Book.objects.filter(queryset).distinct()
else:
results = []
context = {
'result': results,
'query': query,
}
return render(request, 'books/search.html', context)
在我的home page
/ home函数中,我也想使用此搜索功能,但是我只想将其放在sidebar
上,也许我也想将此搜索功能放在我的其他未来的页面。
这是我在home函数中所做的:
def home(request):
query = request.GET.get('q', '')
if query:
queryset = (
Q(title__icontains=query) |
Q(authors__first_name__icontains=query) |
Q(authors__last_name__icontains=query)
)
results = Book.objects.filter(queryset).distinct()
else:
results = []
context = {
'result': results,
'query': query,
}
return render(request, 'books/home.html', context)
如您所见,我只是将代码从我的搜索功能复制到了我的家庭功能,我认为这是多余的。而且,如果我想在其他视图上使用搜索功能,我的代码将变得很混乱,无法在要放置它的每个视图上复制这么长的搜索代码。
这里正确的做法是什么?