gpt4 book ai didi

python - 记录 Django Haystack 搜索关键字

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:38 25 4
gpt4 key购买 nike

我的 url.py 中有以下内容:

from haystack.forms import HighlightedModelSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView
from articles.models import Article

article_sqs = SearchQuerySet().models(Article)

urlpatterns = patterns('',
...
url(r'^article/search/$', SearchView(
template='articles/search/results.html',
searchqueryset=article_sqs,
results_per_page=10,
form_class=HighlightedModelSearchForm
), name='haystack_search'),
...

它工作正常,但我需要捕获搜索关键字以记录它。

我怎样才能捕捉到它?

我们将不胜感激。

最佳答案

我想做类似的事情,所以我创建了一个名为 search

的应用

search/models.py

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _

class SearchTerm(models.Model):
query = models.CharField(
verbose_name = _(u'Search Term'),
max_length = 255,
default = None
)

class SearchQuery(models.Model):
term = models.ForeignKey(
SearchTerm
)
user = models.ForeignKey(
User,
blank = True,
null = True,
)
when = models.DateTimeField(
verbose_name = _(u'Date Searched'),
)

search/urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
url(r'^search/', 'search.views.search', name="search"),
)

然后当然在我的项目 url 中添加了以下规则:

url(r'^', include('search.urls')),

search/views.py

from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render, redirect
from haystack.forms import ModelSearchForm, SearchForm
from haystack.views import SearchView
from search.models import SearchQuery, SearchTerm
import datetime

def search(request):
if 'page' not in request.GET :
try :
st, created = SearchTerm.objects.get_or_create(query=request.GET['q'])
sq = SearchQuery()
sq.term = st
sq.user = request.user
sq.when = datetime.datetime.now()
sq.save()
except :
pass

view = SearchView()
return view(request)

if 'page' not in request.GET这样只在搜索结果的第一页,保存一个SearchQuery

每个 SearchQuery 在数据库中都是唯一的。

SearchTerm 的每个 SearchQuery 都记录有附加信息,例如 user (可为空)和 when该词已被搜索。

view = SearchView()return view(request)让它在记录 SearchQuery 之后,为该请求调用默认的 haystack View 。

关于python - 记录 Django Haystack 搜索关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com