Форум сайта python.su
Допустим вьюха выводит последние сообщения блога:
def blog_index(request): posts = BlogPost.objects.all() return render_to_response('index.html', {'posts': posts, 'user': request.user}, context_instance=RequestContext(request))
{% for post in posts %} <tr><td> Заголовок: <a href={% url blog_entry post.pk %}>{{ post.post_title }}</a><br> Автор: {{ post.post_author }}<br> Сообщение: {{ post.post_text }}<br> {% get_obj_perms user for post as "post_perms" %} {% if "edit_post" in post_perms %} <a href={% url edit_post post.pk %}>редактировать</a> {% endif %} {% if "delete_post" in post_perms %} <a href={% url delete_post post.pk %}>удалить</a> {% endif %} <br> {% get_comment_count for post as comment_count %} Комментариев: {{ comment_count }} <hr> </td></tr> {% endfor %}
Офлайн
Обычно последнее сообщение выводится первым на странице(в обратной же последовательности практикуется вывод в блогах)
В таком случае можно обращаться как posts.0
{{ posts.0.post_author }} - автор первого поста
А если надо именно последний в posts- тогда template_tag напишите, который получит posts и вернет последний элемент.
Офлайн
Не в том вопрос, что первый-последний. А вопрос в том, что вокруг первого сообщения html код отличается от кода остальных, при том что на текущий момент там цикл for с единообразными итерациями. Для таких вещей надо тоже шаблонный тег писать?
Офлайн
Тогда все еще проще.
есть же forloop.first
Вы можете первую итерацию через него ловить
{% for post in posts %} {% if forloop.first %}вывод 1 новости {% else %}вывод просто новости {% endif%} {% endfor %}
Отредактировано nnmware (Фев. 21, 2013 06:50:27)
Офлайн
Насколько понял Вы хотите этого?
{% for instance in list %} {% if forloop.first %} Some HTML {% else %} Another HTML {% endif %} {% endfor %}
Офлайн
Точно! Спасибо! Глаза-глаза мои, слепошарые, ничего в доках не видят. Или просто не стоит читать доки в половине двенадцатого.
Офлайн
Вопрос не совсем по теме, но схож.
Вот автор поста получает все данные модели из БД
def blog_index(request): posts = BlogPost.objects.all()
Отредактировано SergeyChmutov (Окт. 30, 2018 15:20:44)
Прикреплённый файлы:
objects_all.png (6,3 KБ)
Офлайн
SergeyChmutov
В модели Джанги ВСЕГДА есть objects, это результат работы метакласса. Если у вас этого нет, значит либо вы не наследуетесь от models.Model, либо вы делаете что то совсем противоестественное и вам придется показать сюда ваш код целиком
Офлайн
Papa_Svinmodels.py (модель унаследована от models.Model)
SergeyChmutovВ модели Джанги ВСЕГДА есть objects, это результат работы метакласса. Если у вас этого нет, значит либо вы не наследуетесь от models.Model, либо вы делаете что то совсем противоестественное и вам придется показать сюда ваш код целиком
from django.db import models class Travels(models.Model): date = models.DateField(verbose_name='Дата поездки') city = models.CharField(verbose_name='Город', max_length=32) country = models.CharField(verbose_name='Страна', max_length=32)
from django.shortcuts import render from mainapp.models import Travels def travel(request): page_header = 'Путешествия' travels = Travels.objects.all() return render(request, 'travels.html', {'page_header': page_header, 'travels': travels})
>>> from mainapp.models import Travels >>> travels = Travels.objects.all() >>> travels <QuerySet [<Travels: Travels object (1)>]>
Отредактировано SergeyChmutov (Окт. 30, 2018 21:47:42)
Офлайн
SergeyChmutov
Немного непонятно в чем проблема то? Где что не срабатывает, где ошибка возникает? какая ошибка? Если шаблон неправильно отрабатывает, так вы покажите шаблон.
Офлайн