通过URL编码或会话在视图之间传递数据? (Django 2.1)

时间:2019-06-27 19:08:26

标签: django python-3.x django-views

我正在构建一个搜索引擎,以突出显示用户搜索的关键字。例如,如果用户搜索“奶酪”,则单词“奶酪”将在搜索结果中突出显示。我有两种视图:一种用于显示搜索结果列表的页面,另一种用于显示搜索结果内容的页面。我需要将关键字从第一个视图传递到第二个视图,以便可以在两个视图中突出显示该关键字。

查看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中。如果我通过会话传递该关键字,如果用户在我的网站上进行多次查询,它会变得混乱吗?将为另一个查询存储的关键字与当前查询的关键字混淆吗?关于最佳做法有什么建议吗?谢谢!

0 个答案:

没有答案