需要帮助创建搜索视图,以及如何在HTML页面从DB,我创建的应用- Django



我正在用DJANGO建立一个网站,人们把单词和关联如何记住单词。我建立了插入单词的部分。

我现在被困在实现单词搜索和从数据库中提取信息的部分。

def Search_word(request):
if request.method == "POST":
search = request.POST["search"]
word = Words.objects.filter(English_word__contains = search)
return render(request,"search_page.html",{word:word , search:search})
else:
return render(request,"search_page.html",{})
{% if search %}
<h1> You searched for {{search}}</h1>
{% for Words in search %}
{{Words.English_word}}
{{ Words.Hebrew_word }}
{{ Words.How_To_Remember}}
{% endfor %}
{% else %}
<h1> Hey! You Forgot To Search </h1>
{% endif %}

如果你只想搜索一个字段,Django支持的搜索比包含

更好更准确
words = Words.objects.filter(English_word__search = search_term)

但是如果你想有一些类似搜索引擎的功能,你可以使用PostgreSQLwithDjango的全文搜索功能

在<<p> strong> model.py 添加以下命令
from django.contrib.postgres.search import SearchVector

模型管理器:

def full_search(self, search_term):
return self.annotate( 
search=SearchVector('English_word') + 
SearchVector('blog__tagline')).filter(search=seach_term)

这个方法将删除/at/is/the/…>其他英文单词,只能用词向量算法搜索

如果你需要对搜索结果进行排序:

from django.contrib.postgres.search import SearchQuery, SearchRank,SearchVector
vector = SearchVector('english_word')
query = SearchQuery(search_term)
Word.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')

这将根据搜索词的可能性对结果进行注释。

最好的做法是使用模型管理器,避免在视图中做ORM。

Django Docs on search:https://docs.djangoproject.com/en/3.2/ref/contrib/postgres/search/

相关内容

  • 没有找到相关文章

最新更新