Задать вопрос
@Juvel1988

Как в django вывести анонс последней новости в блоке на главной?

Пишу сайт на Django. Делаю это впервые, самостоятельно. У меня не получается создать блок с анонсом последней новости в блоке на главной страницы. И почему то не отображаются новости на странице с новостями. Что я делаю не так?

Сама модель новостей выглядит так:

class Events(models. Model):
    title = models.CharField('Заголовок', max_length=250)
    slug = models.SlugField('Идентификатор', max_length=50,unique=True)
    author = models.ForeignKey ( User, on_delete=models.CASCADE, 
    related_name='Автор', null=True, blank=True)
    main_photo = models.ImageField('Постер', null = True, blank = True, upload_to='prosvet/media/images/main')
    anons = models.CharField(max_length=350)
    body = RichTextUploadingField(
                                    null=False,
                                    blank=False,
                                    # config_name='toolbar_Custom',
                                    external_plugin_resources=[(
                                        'youtube', 
                                        '/static/ckeditor/ckeditor/plugins/youtube/',
                                        'plugin.js',
                                      
                                    )],
                                    )
    #file = models.FileField(null = True, blank = True, upload_to='static/media/docs/')
    date_added = models.DateTimeField(auto_now_add=True)
   
    def __str__(self): # Возврат понятного отображения заголовка в панель администрирования
        return self.title

    class Meta:
        verbose_name = u"Новость"
        verbose_name_plural = u"Афиша" #Афиша


Файл urls.py:

path (r'afisha', views. articles, name = 'afisha'),#Лента новостей
    path('ckeditor/', include('ckeditor_uploader.urls')),#редактор статей
    path(r'new/<el_id>', views.el, name='el'),#Вывод отдельной новости


Файл view.py:

def articles(request):#Страница новостей
        temp = Events.objects.order_by('-date_added') 
        context = {'afisha': temp}
        return render(request, 'gorozhane/afisha.html', context)



def last_article():
    last_pages = Events.objects.order_by("-id")[0:3]
    return {
        'last_pages': last_pages,
    }



def el(request, el_id): #Вывод отдельной новости
    news = Events.objects.get(id=el_id)
    context = {'news':news}
    return render(request, 'gorozhane/article.html', context)

def date(request):
    now = datetime.datetime.now()
    print("Date: "+ now.strftime("%Y-%m-%d")) #текущая дата


def index_view(request):
    return render(request, 'index.html')


Страница с новостью выглядит так:

{% extends "gorozhane/base.html" %}

{% block content %}

<div class="content">

    <h2>{{ news.title }}</h2>
    <p>{{ news.date_added|date:'M d, Y H:i' }}</p>
    <div class="content_block">
        <p>{{ news.body|safe }}</p>
        <p>{{ news.file.url }}</p>
    </div>

    <div id="author">
        <p><img src="{{ news.author.avatar.url }}" height="160" align="bottom" /></p>
        <p valign="bottom">{{ news.author }}</p>
    </div>

</div>

{% endblock content %}


Вывод новостей на странице с новостями:

{% extends "gorozhane/base.html" %}
{% block content %}

<div class="content">
    {% if afisha %}
    {% for article in afisha %}


    <h2 align="left"><a href="{% url 'el' article.id %}">{{ article }}</a></h2>
    {% if article.main_photo %}<br>
    <p><a href="{% url 'el' article.id %}"><img src="{{ article.main_photo.url }}" width="640"></a></p>
    {% endif %}
    <div id="anons">
        <p align="center">{{ article.anons }}</p>
    </div>

    {% endfor %}
    {% else %}
    <p>Новостей нет</p>
    {% endif %}

</div>
{% endblock content %}


А вот тот самый блок на главной:

{% last_article as last %}


        {% for article in last.last_pages %}

        {{ article.title }}

        {% endfor %}
  • Вопрос задан
  • 399 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы