почему моя панель поиска не работает в Django? - PullRequest
0 голосов
/ 05 августа 2020

создал простой поиск в блоге Django, но он не работает. почему панель поиска не работает в веб-приложении блога? нечего искать в строке поиска при поиске чего-либо в поле поиска.

- urls.py

urlpatterns = [
    path('', views.home, name='home'),
    path('about', views.about, name='about'),
    path('contact', views.contact, name='contact'),
    path('search', views.search, name='search'),
]

- views.py

def search(request):
query = request.GET['query']
allPosts = Post.objects.filter(title__icontains=query)
params = {'allPosts': allPosts}
return render(request,'home/search.html', params)

- поиск. html

{% extends 'base.html' %}

{% block title %} Search Results {% endblock title %}

{% block blogactive %}active{% endblock blogactive %}

{% block body %}
<div class="container my-3">
            <h2>Search Results</h2>
            {% for post in allposts %}
            <div class="row no-gutters border rounded overflow-hidden flex-md-row my-4 shadow-sm h-md-250 position-relative">
                <div class="col p-4 d-flex flex-column position-static">
                    <strong class="d-inline-block mb-2 text-primary">Article by {{post.author}}</strong>
                    <h3 class="mb-0">{{post.title}}</h3>
                    <div class="mb-1 text-muted">{{post.datetime}}</div>
                    <p class="card-text mb-auto">{{post.content | truncatechars:500}}</p>
                    <div class='my-2'>
                    <a href="/blog/{{post.slug}}" role='button' class="btn btn-primary">Continue reading</a>
                    
                </div>
                <div class="col-auto d-none d-lg-block">

                </div>
            </div>

            
        </div>
        {% endfor %}
{% endblock body %}

1 Ответ

1 голос
/ 05 августа 2020

В вашем коде есть опечатка. В шаблоне вы используете allposts (все строчные буквы), где вы передаете allPosts из контекста, ie: params = {'allPosts': allPosts}. Поэтому вам нужно изменить любой из них, например, изменить контекст:

params = {'allposts': allPosts}

И одно предложение по улучшению, замените href="/blog/{{post.slug}}" в шаблоне на href="{% url 'url_name' %}". Дополнительную информацию можно найти в документации по тегу url .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...