2017-07-21 9 views
0

Ich habe den Tango mit dem Django-Buch verfolgt und bin mit der Such-API von Bing auf das Suchkapitel gestoßen. Ich habe versucht, es zu benutzen, aber es scheint, als ob Bing diese Dienste nicht mehr anbietet. Jetzt möchte ich die Suchfunktionalität lokal gestalten, so dass sie nur meine Kategorien in der Rango-App durchsuchen kann, aber ich weiß nicht, wie ich das ohne die Bing-Such-API tun kann. Jeder, der mir helfen könnte, wenn es einen Weg gibt. Danke im Voraus.Suchfunktionalität django

+1

Stellen Sie keine Fragen wie diese. Um Ihnen den Einstieg zu erleichtern, werfen Sie einen Blick auf http://haystacksearch.org, dem Standard für Django-Apps (in Kombination mit Elastic Search Backend) oder verwenden Sie etwas wie http://docs.wagtail.io/en/v1 .0b1/search/index.html Wagtail suchen. Wirklich einfach zu konfigurieren, aber nicht so leistungsstark – hansTheFranz

Antwort

0

Hier ist ein Beispiel unter Verwendung von basischen search in django zu implementieren:

1) templates/base.html

Hinweis: Verwenden Sie GET Methode, um Sucheingabe von form zu bekommen.

<form name="exampleform" method="GET" action="{% url 'search' %}"> 

2) views.py

def search(request): 
    try: 
     if 'q' in request.GET:# this will be GET now 
      querystring = request.GET.get('q')# passing in the query value to search view using the 'q' parameter 
      if len(querystring) == 0: 
       return redirect('index') 
      else: 
       pass 
    except: 
     pass 

    results = {} 

    if 'q' in request.GET: 
     querystring = request.GET.get('q') 
     if querystring is not None: 
      results = UserModel.objects.filter(
       Q(email__icontains=querystring) | 
       Q(first_name__icontains=querystring) | 
       Q(last_name__icontains=querystring)).order_by('pk')# filter returns a list 
      context = {'results': results} 
      template = 'templates/search_result.html' 
      return render(request, template, context) 
     else: 
      return redirect('index') 
      context = {} 
    else: 
     return render(request, "templates/search_result.html") 

2) urls.py

url(r'^search',views.search, name='search'), 

3) templates/search_result.html

{% for each_object in results %} // results is list here so pick each element object using for loop 
    <a href="{% url 'user_detail' pk=each_object.pk %}"> 
    <!--Upon successful search object image with hyperlink appears --> 
    <img src="{{each_object.image.url}}" alt="No Image"></a> 
    <p>{{each_object.email}}</p> 
    <p>{{each_object.first_name}}</p> 
    <p>{{each_object.last_name}}</p>  
{% endfor %} 

Es gibt ein paar Projekte um zu suchen. Hier ist eine nicht erschöpfende Liste: djangosearch, django-search (with a dash), django-sphinx.

+0

Danke, das war die Art von Dingen, die ich suchte. @Emil George James – Allen

+0

Sie haben nicht die urls.py für die Ergebnisse.html hinzugefügt. – Allen

+0

@Allen Sorry, es sollte 'search_result.html' nicht' result.html' sein. –

1

Sie eine sehr einfache Suche in Django implementieren können django-filter

Verwandte Themen