I am implementing search on a local Django project: Django 1.11.5, Python 
3.6.3, Ubuntu 16.04. My issue is getting the search results onto the 
template.

I am using standard CBV for everything else in the site, but for this one I 
wrote my own. It uses the same template as my ListView, which shows all 
objects fine.



def serp(request):
    if request.method == 'GET' and 'searchbox' in request.GET:
        q = request.GET.get('searchbox')
    query = SearchQuery(q)
    object_list = Entry.objects.annotate(
        rank=SearchRank(F(
            'search_vector'), query)).filter(
        search_vector=query).order_by(
        '-rank').values_list('title', 'rank')
    return render(request, 'serp_list.html', {'object_list': object_list})


Django Debug Toolbar reports everything went as expected. The right 
template and view were called, as well as the right db query. I had 
previously tested this query in the shell, and it pulls up a 4 element 
queryset, as it should. 

Even though no search results show on the page, there are 4 instances of 
the html that should be surrounding each result and rows=4 loops=1 in the 
query plan. 

One thing I found curious is that the **mere change** in the variable name 
'object_list' to 'resultslist' gave me no db query! I had always thought 
variable names didn't matter in Python, 

but apparently 'object_list' is virtually a reserved word when it comes to 
views (even FBVs) and templates in Django? Here is the template:

<blogpost start>
<article class="blogpost">
        <header>
                {% for object in object_list %}
                <h2><ahref="{{ object.get_absolute_url }}">{{ object.title 
}}</a></h2>
                        <div class="post-info">
                                <span class="post-date">
                                        <i class="icon-calendar"></i>
                                                <span 
class="day">{{object.chron_date}}</span>
                                                        <span 
class="month">{{object.clock}} </span>
        </span>
<span class="submitted"><i class="icon-user-1"></i> by <a href="#"></a></span>
<span class="comments"><i class="icon-chat"></i> <a href="#">22 
comments</a></span>
                                                                        </div>
        </header>
                <div class="blogpost-content">
                        {{ object.content|truncatewords:30 }}</div>
                                <footer class="clearfix">
                                        <div class="tags pull-left"><i 
class="icon-tags"></i> <a href="#">tag 1</a>, <a href="#">tag 2</a>, <a 
href="#">long tag 3</a></div>
        <div class="link pull-right"><i class="icon-link"></i><a href="{{ 
object.get_absolute_url }}">Read More</a></div>
                                </footer>
</article>
                <!-- blogpost end-->
                {% endfor %}
Any assistance in getting the search results to show up greatly appreciated.--

ps -


Despite the 99% similarity, this is not identical to my issue in 
https://groups.google.com/forum/#!searchin/django-users/template%7Csort:relevance/django-users/o4UKSTBtwyg/cU4JeRJHHgAJ
 
There I had the for variable 'i' but put the name of the list in the 
{{regular variables}}. That is not the issue this time, but clearly I have 
trouble grasping the regular and efficient use of Django context and 
templates. And yes, I have looked at the docs as well as elsewhere. So if, 
in addition to an answer, you can point me to a real clear, simple, step by 
step primer on making these two things work together, I would gladly look 
at it.  









-

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/6670bc0d-9f64-4b6f-9f62-a007d969e0b9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to