我正在构建一个搜索引擎,以突出显示用户搜索的关键字。例如,如果用户搜索“奶酪”,则单词“奶酪”将在搜索结果中突出显示。我有两种视图:一种用于显示搜索结果列表的页面,另一种用于显示搜索结果内容的页面。我需要将关键字从第一个视图传递到第二个视图,以便可以在两个视图中突出显示该关键字。
查看1:
def query_search(request):
articles = cross_currents.objects.all()
search_term = ''
if 'keyword' in request.GET:
search_term = request.GET['keyword']
articles = articles.annotate(similarity=Greatest(TrigramSimilarity('Title', search_term), TrigramSimilarity('Content', search_term))).filter(similarity__gte=0.03).order_by('-similarity')
context = {'articles': articles, 'search_term': search_term}
return render(request, 'query_search.html', context)
查看2:
def article_detail(request, ArticleID):
ArticleID = get_object_or_404(cross_currents_article_detail, ArticleID=ArticleID)
context = {'ArticleID':ArticleID}
return render(request, 'article_detail.html', context)
urls.py:
urlpatterns = [
path('', query_search, name='query_search'),
path('article/<int:ArticleID>/', article_detail, name='article_detail')]
是否应该通过会话或URL编码传递关键字(search_term
)?当前,该关键字已编码在View 1的URL中。如果我通过会话传递该关键字,如果用户在我的网站上进行多次查询,它会变得混乱吗?将为另一个查询存储的关键字与当前查询的关键字混淆吗?关于最佳做法有什么建议吗?谢谢!