Как я могу рендерить объекты в шаблонах от html до django через первичный ключ? - PullRequest
1 голос
/ 18 марта 2020

У меня проблема с поиском статей на моей домашней странице. проблема заключается в том, что при вводе запроса в строке поиска возникает ошибка «Обратный поиск для 'blog_detail /' не найден. 'blog_detail /' не является допустимой функцией представления или именем шаблона." появляется.

код

домашняя страница, с которой я ищу запрос

<form method="get" action={% url 'search' %} class="">
<!--        <form method="get" action="{% url 'search' %} class="">-->
  <input type="text" name="search" class="form-control bg-dark text-white" placeholder="Search Articles" aria-label="Recipient's username" aria-describedby="basic-addon2">
  <div class="input-group-append bg-dark">
      <button class="btn btn-outline-primary bg-danger text-white" type="submit" >Search </button>
  </div>
</form>

поиск. html

Действие формы отправляет запрос на эту страницу

<div class="row">

    {% for item in post %}

          <div class="card my-3 text-white bg-dark mb-3" style="width: 18rem;">

            <img src="/media/{{item.thumbnail}}" class="card-img-top" alt="...">
            <div class="card-body">
              <h5 class="card-title">{{item.title}}</h5>
              <p class="card-text">{{item.intro}}</p>
              <a href="{% url 'blog_detail/' id=item.post_id %}" class="btn btn-primary">read more...</a>

            </div>
          </div>

    {% if forloop.counter|divisibleby:5 %}
    </div>
    {% endif %}
   {% endfor %}
</div>

это (href="{% url 'blog_detail/' id=item.post_id %}") выдает сообщение об ошибке (NoReverseMatch at / search /)

в urls.py маршрут для blog_detail: path("blog_detail/<int:id>", views.blog_detail, name = "blog"),

, а для маршрута поиска: path ("search /", views.search, name = "search"),

в моделях первичный ключ установлен как post_id: post_id = models.AutoField (primary_key = True)

надеюсь, этой информации достаточно ....!

1 Ответ

1 голос
/ 18 марта 2020

Первый параметр тега шаблона {% url &hellip; %} [Django -doc] - это имя пути. Так что вы должны написать это как:

href="{% url <b>'blog'</b> id=item.post_id %}"

, поскольку в вашем urlpatterns вы написали:

urlpatterns = [
    # &hellip;
    path("blog_detail/<int:id>", views.blog_detail, <b>name="blog"</b>),
    # &hellip;
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...