Django. Модель не отображается в шаблоне

#python #django #django-templates

#питон #django #django-шаблоны #python

Вопрос:

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

models.py

 from django.db import models
from django.utils import timezone
from django.urls import reverse


class MyDate(models.Model):
    english_date = models.DateField(auto_now=False)
    hebrew_date = models.CharField(max_length=20)

    def __str__(self):
       return self.hebrew_date
  

views.py

 from django.views.generic import (TemplateView,ListView,DetailView,CreateView,UpdateView,DeleteView)
from luach.models import MyDate

class HomePage(TemplateView):
    template_name = 'new.html'

class MyDateListView(ListView):
    model = MyDate
    context_object_name = 'mydate'
  

шаблон

 {% extends 'luach/base.html' %}
{% block content %}
  <div class="jumbotron">
    {% for mydate in mydate %}
      <h2>Hi{{ MyDate.hebrew_date }}</h2>
    {% empty %}
      <h2>Sorry, no dates in this list.</h2>    
    {% endfor %}
 </div>
{% endblock  %}
  

Ответ №1:

Это потому, что вы не передаете контекст шаблону. напишите так:

 return(request, 'noob/clueless-me.html' context)
  

в контексте:

 context = {
  'my_date' : my_date,
}
  

Ответ №2:

Попробуйте это в своем шаблоне:

 {% for date in mydate %}
      <h2>Hi{{ date.hebrew_date }}</h2>
{% endfor %}
  

вы не можете использовать MyDate , вы должны использовать свой context_object_name : mydate

Комментарии:

1. дайте мне знать, работает ли приведенный выше код. Ответ от djangotic не будет работать, потому что вы используете представления на основе классов вместо основанных на функциях.. Если это не работает, покажите нам свой urls.py пожалуйста

Ответ №3:

в вашем операторе for в шаблоне ошибка, попробуйте это:

 {% extends 'luach/base.html' %}
{% block content %}
<div class="jumbotron">
  {% for date in mydate %}
     <h2>Hi{{ date.hebrew_date }}</h2>
     {% empty %}
     <h2>Sorry, no dates in this list.</h2>    
  {% endfor %}
</div>
{% endblock  %}