我想将弹性搜索与django集成在一起,但首先我需要在url中获得一个不错的参数
http://127.0.0.1:8000/search?q=search+term
(视图的)urls.py
urlpatterns = [
path('?q=', SearchIndexView.as_view(), name="search-index"),
]
(应用程序的)urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
path('u/', include('user.urls')),
path('search', include('search.urls')),
]
到目前为止,这是我所拥有的,但是我无法弄清楚如何使其工作。 我想使用tha path()而不是url()
答案 0 :(得分:1)
这样保留您的网址
urlpatterns = [
path('', SearchIndexView.as_view(), name="search-index"),
]
以html格式
<form method='GET'>
和input put name="q"
答案 1 :(得分:1)
您不需要在urls.py
中定义url query strings。您可以像这样保留网址:
path('', SearchIndexView.as_view(), name="search-index"),
,在SearchIndexView
中,您可以这样操作:
q = request.GET.get('q')
答案 2 :(得分:1)
HTML表格
<form action="{%url 'search' %}" method="get">
<input type="text" name="q" placeholder="Search...">
<button type="submit"></button>
</form>
网址
path('search/',views.search,name='search')
观看次数
def search(request):
query = request.GET.get('q')
if query:
print("do your stuff here")
答案 3 :(得分:0)
在Django通用视图中,您可以按以下方式为模型Blog创建搜索视图
class SearchResultView(ClientMixin, TemplateView):
template_name = 'clienttemplates/clientsearchresult.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
query = self.request.GET.get('q')
if query:
lookup = Q(title__icontains=query)
search_list = Blog.objects.filter(lookup)
context["slist"] = searchlist
return context
在HTML中只需在输入标记中放入name ='q'
<input type="text" class="search-field " placeholder="Search Blog..." value="" name='q'>
在urls.py
中path('search/result', SearchResultView.as_view(), name="searchresult"),
在clientsearchresult.html中,您只需添加
{% if slist %}
{% for blog in slist %}
{{blog.title|title}}
{{bog.content|safe}}
{% endfor %}... and so on
{% endif %}