Django текстовый контент не обслуживается (первая попытка) - PullRequest
1 голос
/ 09 июля 2020

Резюме:

Цель этого конкретного Django веб-приложения - просто показать некоторый текст lorem ipsum на домашней странице, например сообщение в блоге. Django не обслуживает содержание моего сообщения в блоге. Я знаю, что проблема связана либо с моим views.py, либо с urls.py (или с обоими). ​​

Подробности:

У меня есть данные, объявленные внутри моих моделей .py. У меня есть файл views.py для создания экземпляра модели. Я перенес sqlite и успешно вошел в панель управления администратора и ввел некоторые данные-заполнители.

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

Вот как выглядит мой тестовый пример: https://i.imgur.com/IuOl3G4.jpg Чтобы описать это, вы можете увидеть элементы заголовка «Сообщение в блоге», «Дата», «Изображение» и «Основной текст HTML», но ничего не отображается.

Вот urls.py моего приложения:

from django.urls import path, include
from . import views


urlpatterns = [
   path('', views.mortems, name='home'),
]

Я попытался заменить кавычки для первого параметра path () на alls/landings . Я пробовал поменять местами параметр имени с home на mortems. Я также пробовал использовать mortem (без s). Ни одно из этих изменений не помогает.

Я также пробовал поиск в Google (с различными вариантами):

  • 'основной текст django не отображается шаблон'
  • 'django не отображается текстовое содержимое '

Это вызвало (среди прочего) ТАК вопросы и ответы, которые связаны со звуком, но полностью отличаются от моей проблемы:

Вот my app's views.py:

from django.shortcuts import redirect, render, get_object_or_404
from mortems.models import Mortem

def mortems(request):
   mortem = Mortem.objects.order_by('-pub_date')
   context = {'mortem':mortem}
   return render(request, 'alls/landings.html', context)

Что бы это ни стоило, вот соответствующие строки в моей модели:

class Mortem(models.Model):
   title = models.CharField(max_length=161)
   pub_date = models.DateTimeField()
   image = models.ImageField(upload_to='media/')
   body = models.TextField()
   now = datetime.datetime.now()

Кроме того, вот мой шаблон с соответствующими проблемами c строки (42-50):

<h1> BLOG POST:</h1>
<h4>Date: {{ mortem.pub_date_preference }}</h4>
<br />
Image: <img src="{{ mortem.image.url }}" class="img-responsive center-block" style="max-height:300px;" />
<br />
 
<!-- Body text should go here :   -->
Body Text:
<p>{{ mortem.body|safe }}</p>

Полный исходный код доступен на GitHub. Вот исходный код приложения mortems в частности.

Для щедрых пользователей SO, у которых есть время, я думаю, я принимаю запросы на вытягивание. хаха

1 Ответ

1 голос
/ 09 июля 2020

Я думаю, вам нужно обновить views.py как:

from django.shortcuts import redirect, render, get_object_or_404
from mortems.models import Mortem

def mortems(request):
    mortems = Mortem.objects.all().order_by('-pub_date') # returns an iterable queryset
    context = {'mortems':mortems}  # using plural as it's a list like object
    return render(request, 'alls/landings.html', context)

В коде шаблона вам нужно перебирать список для отображения одного объекта по одному. т.е.

<h1> BLOG POSTs:</h1>
{% for moertm in mortems} 
  <h4>Date: {{ mortem.pub_date_preference }}</h4>
  <br />
  Image: <img src="{{ mortem.image.url }}" class="img-responsive center-block" style="max-height:300px;" />
  <br />
 
  <!-- Body text should go here :   -->
  Body Text:
  <p>{{ mortem.body|safe }}</p>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...