Не удается отобразить контекст, переданный шаблонам при использовании 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>