Django Suchergebnisse anzeigen

Django, Flask, Bottle, WSGI, CGI…
Antworten
venom.one
User
Beiträge: 2
Registriert: Dienstag 19. Juni 2018, 13:36

Hallo zusammen,

schön das ich der Community beitreten durfte 8)
Ich steh aktuell vor einem Problem wo mir seit einigen Tagen schon niemand so richtig mit helfen konnte und zwar
habe ich in meinem base.html template eine suchbox welche alle Posts durchsuchen kann. Diese baut Ihre query aus der category ID und dem "suchwort":

base.html

Code: Alles auswählen

        <div class="globalsearch">
                <form id="searchform" action="{% url 'search' %}" method="get" accept-charset="utf-8">
                    <label for="{{ categorysearch_form.category.id_for_label }}">In category: </label> {{ categorysearch_form.category }}
                    <input class="searchfield" id="searchbox" name="q" type="text" placeholder="Search for ...">
                    <button class="searchbutton" type="submit">
                        <i class="fa fa-search"></i>
                    </button>
                </form>
            </div>

im Anschluss soll sich die view class "globalsearch" um die eigentliche Query kümmern:

Code: Alles auswählen

class globalsearch(ListView):

    model = Post
    paginate_by = 10

    def get_queryset(self):
        qs = Post.objects.published()

        keywords = self.request.GET.get('q')
        if keywords:
            query = SearchQuery(keywords)
            title_vector = SearchVector('title', weight='A')
            content_vector = SearchVector('content', weight='B')
            tag_vector = SearchVector('tag', weight='C')
            vectors = title_vector + content_vector + tag_vector
            qs = qs.annotate(search=vectors).filter(search=query)
            qs = qs.annotate(rank=SearchRank(vectors, query)).order_by('-rank')

        return qs

def category_dropdown(request):
    return render (request, 'quickblog/base.html')
und zu guter letzt sollen die ergebnisse der suche auf dem search.html template ausgegeben werden:

Code: Alles auswählen

{% extends 'quickblog/base.html' %}

{% block content %}
    {% for post in object_list %}
        <div class="post">
            <h1><u><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></u></h1>
            <p>{{ post.content|linebreaksbr }}</p>
            <div class="date">
                <a>Published by: {{ post.author }}</a><br>
                <a>Published at: {{ post.published_date }}</a><br>
                <a>Category: {{ post.category }}</a><br>
                <a>Tag(s): {{ post.tag }}</a>
            </div>
        </div>
    {% endfor %}

{% if is_paginated %}
    <ul class="pagination">
        {% if page_obj.has_previous %}
            <li><a href="?page={{ page_obj.previous_page_number }}">&laquo;</a></li>
        {% else %}
            <li class="disabled"><span>&laquo;</span></li>
        {% endif %}
        {% for i in paginator.page_range %}
            {% if page_obj.number == i %}
                <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
            {% else %}
                <li><a href="?page={{ i }}">{{ i }}</a></li>
            {% endif %}
        {% endfor %}
        {% if page_obj.has_next %}
            <li><a href="?page={{ page_obj.next_page_number }}">&raquo;</a></li>
        {% else %}
            <li class="disabled"><span>&raquo;</span></li>
        {% endif %}
    </ul>
{% endif %}
{% endblock %}

Ich erhalte aber leider keinen Inhalt auf meinem search.html template. Entwerder sehe ich den Fehler nicht oder es ist Grundsätzlich was falsch.
Bin fuer Jede Hilfe Dankbar :D

Github: https://github.com/rsmvdl/quickblog/
kurzer verweis auf die Doku von ListView: https://docs.djangoproject.com/en/2.0/r ... c-display/

Beste Grüße
venom.one
User
Beiträge: 2
Registriert: Dienstag 19. Juni 2018, 13:36

Wie ich jetzt herausgefunden habe kommt der request überhaupt nicht bei der view an, ich weiß aber nicht wieso?!
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@venom.one: Was bedeutet das? Wie äussert sich dass, das die Anfrage nicht ankommt?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

poste bitte auch mal die zugehörige urls.py.

Gruß, noisefloor
Antworten