Вывод не отображается в шаблоне Django для той же модели, вывод которой отображается в другом шаблоне
Я действительно новичок в Django и создаю сайт в процессе его изучения. Согласно требованиям, я должен показывать некоторые новостные статьи как на главной странице, так и на другой странице, на которую я перехожу с навигационной панели. Я отобразил список статей и отдельные детали с помощью цикла в файлах шаблона. Проблема в том, что хотя я написал цикл for для отображения новостной статьи на главной странице, ничего не отображается. Ниже приведены мои файлы models.py, views.py, app/urls.py и project/urls.py :
#models.py
from django.contrib.auth.models import User
from django.db import models
from django.urls import reverse
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from taggit.managers import TaggableManager
from ckeditor.fields import RichTextField
class News(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
news_title = models.CharField(max_length=250)
# slug = models.SlugField(max_length=250, unique_for_date='nw_publish', unique=True, null=True)
slug = models.SlugField(max_length=300, unique_for_date='nw_publish')
news_author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='news_posts')
news_body = RichTextField()
image_header = models.ImageField(upload_to='featured_image/%Y/%m/%d/', null=True, blank=True)
nw_publish = models.DateTimeField(default=timezone.now)
nw_status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
news_tags = TaggableManager()
class Meta:
ordering = ('nw_publish',)
def __str__(self):
return self.news_title
#views.py
from django.views import generic
from django.views.generic import ListView, DetailView
from django.http import Http404
from .models import Post, Report, News, Member, Project
class NewsListView(ListView):
model = News
context_object_name = 'newss'
template_name = 'blog/news.html'
class NewsDetailView(DetailView):
model = News
context_object_name = 'news'
template_name = 'blog/news_detail.html'
#app/urls.py
from django.urls import path, re_path
from . import views
from .views import Home, HomeDetail, Contact, ReportListView, ReportDetailView, NewsListView, NewsDetailView
app_name = 'blog'
urlpatterns = [
# post views
path('', Home.as_view(), name='home'),
path('home/<slug:slug>/', HomeDetail.as_view(), name='details'),
path('news/', NewsListView.as_view(), name='news_list'),
path('news/<slug:slug>/', NewsDetailView.as_view(), name='news_detail'),
path('contact/', Contact.as_view(), name='contact'),
]
#project/urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls', namespace='blog')),
path('ckeditor/', include('ckeditor_uploader.urls')),
path('members/', include('blog.urls', namespace='members')),
path('news/', include('blog.urls', namespace='news')),
path('contact/', include('blog.urls', namespace='contact')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Теперь мой файл шаблона для нового списка содержит следующий блок кодов, и объекты отображаются :
<div class="row">
{% for news in newss %}
<div class="col-lg-4 wow fadeInUp" data-wow-delay="100ms">
<!--News Two Single-->
<div class="news-two__single">
<div class="news-two__img-box">
<div class="news-two__img">
{% if news.image_header %}
<img src={{ news.image_header.url }} alt="{{ news.news_title }}">
{% endif %}
<a href={{ news.get_absolute_url }}>
<i class="fa fa-plus"></i>
</a>
</div>
<div class="news-two__date">
<p>{{ news.nw_publish |date:"M d, Y" }}</p>
</div>
</div>
<div class="news-two__content">
<ul class="list-unstyled news-two__meta">
<li><a href="#"><i class="far fa-user-circle"></i> {{ news.news_author }}</a></li>
</ul>
<h3>
<a href={{ news.get_absolute_url }}>{{ news.news_title }}</a>
</h3>
<p class="news-two__text">{{ news.news_body | truncatechars:110 | safe }}</p>
</div>
</div>
</div>
{% endfor %}
</div>
На моей домашней странице мне нужно добиться чего-то вроде следующего:
Я добавил следующий код для рендеринга объекта, но он пуст:
{% for news in newss %} <img src={% static "assets/images/blog/news-one-img-1.jpg" %} alt="">
<a href="news-details.html">
<i class="fa fa-plus"></i>
</a>
</div>
<div class="news-one__bottom">
<ul class="list-unstyled news-one__meta">
<li>20 Jan, 2021</li>
<li><span>/</span></li>
</ul>
<h3 class="news-one__title">
<a href="news-details.html">{{ news.news_title }}</a>
</h3>
</div>
</div>
{% endfor %}
</div>
</div>
Вывод выглядит следующим образом:
Моя версия Django - 3.27.2, а версия python - 3.6.8.
Простите за такой глупый вопрос. Я пытаюсь достичь:
- Все новостные статьи как на главной странице, так и на странице новостей в виде списка
- Показать первую новость в левом поле и остальные 3 или 4 новости в правом поле
Но выход цикла не виден, как показано на прилагаемом изображении. Пожалуйста, укажите мне, что я делаю неправильно. Я застрял на некоторое время. Заранее спасибо.