在 Django 中添加 ?q=search+term url
Add ?q=search+term in django url
我想将 elastic search 与 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')),
]
这就是我目前所拥有的,但我不知道如何让它发挥作用。
如果可能的话,我想使用 path() 而不是 url()
保持你的url这样
urlpatterns = [
path('', SearchIndexView.as_view(), name="search-index"),
]
采用 html 形式
<form method='GET'>
并在 input put name="q"
您不需要在 urls.py
中定义 url query strings。您可以像这样保留 url:
path('', SearchIndexView.as_view(), name="search-index"),
在SearchIndexView
中你可以这样做:
q = request.GET.get('q')
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")
在 Django 通用视图中,您可以按如下方式为模型博客创建搜索视图
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
in 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 %}
我想将 elastic search 与 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')),
]
这就是我目前所拥有的,但我不知道如何让它发挥作用。 如果可能的话,我想使用 path() 而不是 url()
保持你的url这样
urlpatterns = [
path('', SearchIndexView.as_view(), name="search-index"),
]
采用 html 形式
<form method='GET'>
并在 input put name="q"
您不需要在 urls.py
中定义 url query strings。您可以像这样保留 url:
path('', SearchIndexView.as_view(), name="search-index"),
在SearchIndexView
中你可以这样做:
q = request.GET.get('q')
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")
在 Django 通用视图中,您可以按如下方式为模型博客创建搜索视图
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
in 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 %}