Не удается отобразить контекст, переданный шаблонам при использовании Django3.1

Я хочу использовать Django для создания доски объявлений на своем веб-сайте, поэтому я сделал такую ​​модель:

class notice(models.Model):
    # the title of the notice
    text = models.CharField(max_length = 50)
    date_added = models.DateTimeField(auto_now_add = True)

    def __str__(self):
        return self.text

И я написал "views.py" вот так (основная часть):

def notices(request):
    # display the notice title
    notices = notice.objects.order_by("date_added")
    context = {"notice": notices}
    return render(request, "index.html", context)

Но в файле index.html, когда я писал эти коды:

    <ul>
        {% for n in notices %}
        <li>{{n.text}}</li>
        {% endfor %}
    </ul>

Ничего не отображалось. Кто-нибудь знает, как решить эту проблему? Буду признателен, если вы мне поможете.

Ну... Я очень плохо говорю по-английски, и если то, что я сказал, будет невежливым... Не могли бы вы простить мне это? Спасибо!

Обновить:

Спасибо за ответ Biplove Lamichhane! И вот что он сказал при запуске Django Shell:

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from wl.models import *
>>> notice.objects.order_by("date_added")
<QuerySet [<notice: testing>]>

В "index.html":

    <ul>
        {% for n in notices %}
        <li>{{n}}</li>
        {% endfor %}
    </ul>

В "views.py":

def notices(request):
    # display the notice title
    notices = notice.objects.order_by("date_added")
    context = {"notices": notices}
    return render(request, "index.html", context)

Тем не менее, ничего не отображается.

2 ответа

Да действительно опечатка. сделайте это заметкой на странице html, все готово.

Ты дал notice в переменную контекста, здесь: context = {"notice": notices}. Но использовал,noticesв шаблоне. Итак, либо измените переменную в views.py, например:

context = {"notices": notices}

Или,

Измените шаблон, например:

    <ul>
        {% for n in notice %}
        <li>{{ n.text }}</li>
        {% endfor %}
    </ul>

Обновить

Как ваш класс уведомления __str__ возвращается text вы можете просто сделать:

<li>{{ n }}</li>
Другие вопросы по тегам