在Django URL中添加?q = search + term

时间:2018-12-25 06:48:43

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

我想将弹性搜索与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()

4 个答案:

答案 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 %}