Здравствуйте, имеется bootstrap шаблон с блогом вот такого рода:
На скриншоте посты написаны от руки с применением html + css.
Я работаю с Django и мне нужно сделать чтоб посты добавлялись автоматически, вместо тех, которые написаны от руки. Скажу сразу, в Django я новичок, модели для поста описал, но не получается прикрепить их к этому файлу.
пример моего файла models.py :
from django.db import models
from django.utils import timezone
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
class Meta:
verbose_name_plural = 'Categories'
def __str__(self):
return self.name
class Post(models.Model):
category = models.ForeignKey(Category)
author = models.ForeignKey('auth.User')
title = models.CharField(max_length=128)
text = models.TextField()
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
created_date = models.DateTimeField(default=timezone.now())
published_date = models.DateTimeField(blank=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
И пример views.py :
from django.shortcuts import render
from .models import Post
from django.utils import timezone
def index(request):
return render(request, 'blog/index.html')
def post_list(request):
posts = Post.objects.filter(published_date_lte=timezone.now().order_by('published_date'))
return render(request, 'blog/index.html', {'posts': posts})
Вот еще кусочек html файл который отвечает за посты:
Technology
Lorem Ipsum is simply
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud eiusmod tempor incididunt ut labore et dolore magna aliqua exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Ut enim ad minim veniam, quis nostrud eiusmod tempor incididunt ut labore et dolore magna aliqua exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
- Admin
- 30-12-2015
- 3 Comments
- 5 favourites
- 1.128 views
Пример всего html: ссылка
Таких кусков 5 штук, то есть 5 постов на странице. Я пытался удалить 4 последних, оставить один и немного изменить его, а именно:
{% for post in posts %}
{{ posts.category }}
{{ posts.title }}
{{ posts.text }}
- {{ posts.author }}
- {{ posts.published_date }}
- {{ posts.likes }}
- {{ posts.views }}
Но все смещалось и я получал вот такой результат:
Посты зарегистрированы в админ панельке и я добавлял несколько штук через нее, но на сайте это никак не отображалось. Помогите пожалуйста, в чем причина? 2 день ломаю голову . Прощу прощения если описание получилось слишком большое :>
Ответ
У тебя в цикле {%for post in posts%}, необходимо использовать post.* , а не posts.*(post.title, post.text и т.п.). И возьми title ,category и text в один div, так проще редактировать. Также если у тебя много постов а нужно вывести только 5 используй {%for post in posts|slice:":5"%}
Комментариев нет:
Отправить комментарий