def home(request):
context = {
'posts': posts,
'title': posts['title']
}
return render(request, 'blog/home.html', context)
Но этот вид использования на практике не годится. Это ваша домашняя страница, а не страница поста. вам не нужно указывать c заголовок сообщения на главной странице.
Я рекомендую использовать вот так
- Создать модель сообщения
- Создать URL-путь для вашего функция просмотра (для страницы публикации)
- Создание html страницы для функции просмотра post_page
в models.py и не забудьте перенести модель к базе данных с python manage.py makemigrations
и python manage.py migrate
import django.db import models
class Post(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(
max_length=250,
unique_for_date='publish')
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='blog_posts'
)
content = models.TextField()
date_posted = models.DateTimeField(auto_now_add=True)
# What ever you want you can add
def __str__(self):
return self.title
в urls.py выглядит как
urlpatterns = [
# your paths what ever you have
path('blog/<slug:post_slug>', views.post_page, name='post_page'),
]
в views.py
from django.shortcuts import render, get_object_or_404
from .models import Post
# and other imports
def home(request):
posts = Post.objects.all()
context = {
'posts': posts
}
return render(request, 'blog/home.html', context)
def post_page(request, post_slug):
post = get_object_or_404(Post, slug=post_slug)
# and other operation you want
return render(request, 'blog/post_page.html', { 'post': post } )
затем на вашей post_page. html
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ post.title }}</title>
</head>
<body>
<div>
{{ post.content }}
</div>
</body>
</html>
после всего, что я рекомендую сделать базу. html затем расширьте html страницы из него