Рендеринг данных представления Django в HTML

Я создаю учебный портал, на котором студенты могут учиться по различным книгам. Каждая книга будет иметь различные главы / темы.

Каждая тема имеет уникальный slug, как отражено в приведенной ниже модели, который мы хотим отобразить / показать на HTML странице, при нажатии на него.

Я хочу показывать содержимое темы на отдельной HTML-странице, когда кто-то нажимает на эту конкретную тему. Я написал приведенный ниже код, однако, не смог заполнить данные на HTML.

Моя модель Django, view.py и url.py выглядят следующим образом.

Моя модель Django выглядит следующим образом:

class book_explination(models.Model):
       title = models.CharField  (max_length = 255)
       slug = models.SlugField(max_length= 250, null = True, blank = True, unique= True)
       lesson_no = models.CharField  (max_length = 255)
       book_text = models.TextField  (blank=False, null=False)

Моя точка зрения такова:

def topic_detail(request, url):
    topic_detail = book_explination.objects.get(slug = url)
    return render(request, 'blog/topic_detail.html', {'topic_detail':topic_detail})

Страница HTML-рендеринга выглядит следующим образом:

{% block content %}
  <div class="container">
    <p> {{lesson_no | safe}} </p>
    <p> {{book_text | safe}} </p>
    <p> {{book_text_explination | safe}} </p>
  </div>
{% endblock %}    


<ul>
  {% for c in topic_detail %}
    <li>{{ c.lesson_no }}</li>
    <li>{{ c.lesson_no }}</li>
    <li>{{ c.lesson_no }}</li>
  {% endfor %}
</ul>

Буду очень благодарен за вашу помощь. Спасибо

Вам нужно добавить ваш цикл внутри тега block

{% block content %}

      <div class="container">
        <p> {{lesson_no | safe}} </p>
        <p> {{book_text | safe}} </p>
        <p> {{book_text_explination | safe}} </p>
      </div>
    
    <ul>
      {% for c in topic_detail %}
        <li>{{ c.lesson_no }}</li>
        <li>{{ c.lesson_no }}</li>
        <li>{{ c.lesson_no }}</li>
      {% endfor %}
    </ul>
{% endblock %}    

Добавление: Я рекомендую вам использовать get_object_or_404

from django.shortcuts import get_object_or_404

def topic_detail(request, url):
    topic_detail = get_object_or_404(book_explination, slug=url)  
    return render(request, 'blog/topic_detail.html', {'topic_detail':topic_detail})
Вернуться на верх