如何从view1到view2调用函数?的Django2.2

时间:2019-04-28 02:59:52

标签: python-3.x django-2.2

我在这里做正确的事吗?

在我的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)

如您所见,我只是将代码从我的搜索功能复制到了我的家庭功能,我认为这是多余的。而且,如果我想在其他视图上使用搜索功能,我的代码将变得很混乱,无法在要放置它的每个视图上复制这么长的搜索代码。

这里正确的做法是什么?

0 个答案:

没有答案