Я создаю сайт с приложением для блога в django 2.2. У меня проблема только с последним шагом, который заключается в создании представления для одного сообщения. К сожалению, я не знаю, как это закончить.
Я создал простейшее представление, которое только могу, но после ввода я получаю ошибку 500 от сервера.
def single_post(request):
return render(request=request, template_name="posts/single_post.html")
Этомоя модель, представление и URL:
models.py
# Post models
from django.db import models
from datetime import datetime
from django.utils.text import slugify
class Post(models.Model):
title = models.CharField(max_length=150, verbose_name="Tytuł")
content = models.TextField(verbose_name="Zawartość")
lead = models.CharField(max_length=35, verbose_name="Skrót artykułu")
published = models.DateTimeField(verbose_name="Data publikacji", default=datetime.now())
slug = models.SlugField(unique=True)
cover = models.ImageField(upload_to='images/')
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Post, self).save(*args, **kwargs)
def __str__(self):
return self.title
urls.py
from django.contrib import admin
from django.urls import path, include
from . import views
app_name = "posts"
urlpatterns = [
path("posts/", views.posts_list, name="posts_list"),
path('<str:slug>/', views.single_post, name='single_post'),]
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
# Create your views here.
def posts_list(request):
return render(request=request, template_name="posts/posts_list.html", context={"posts": Post.objects.all})
def single_post(request,slug):
post = Post.objects.get(slug=slug)
return render(request=request, template_name="posts/single_post.html", context={"post": post})
templates / posts / posts_list.html - это страница со всеми сообщениями на exmaple.com/posts/
<section class="bg-light py-5" id="aktualnosci">
<div class="container">
<h1>Informacje o zmianach w prawie podatkowym</h1>
<div class="divider"></div>
<p class="text-paragraph pt-3">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ullam iure consectetur accusantium delectus, iusto culpa mollitia eum molestiae at? Ab!</p>
<div class="row py-3">
{% for post in posts %}
<div class="col-lg-6">
<div class="news-card mb-3">
<div class="text-center text-white bg-blue d-flex align-items-center news-card-date">
<div class="mx-auto news-card-date-body w-75">
<i class="far fa-calendar-alt d-none d-block mx-auto"></i>
<span class="d-block news-card-date-value mt-1">{{ post.published }}</span>
</div>
</div>
<div class="news-card-body">
<div class="news-card-img">
<img class="img-fluid" src="{% static 'main/images/126.jpg' %}" alt="">
</div>
<div class="news-card-content">
<div class="news-card-content-inner">
<h2>{{ post.title }}</h2>
<p class="text-paragraph">{{ post.lead }}</p>
<a class="pb-2" href="{{ post.slug }}">Czytaj więcej</a>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
Я бы хотел, чтобы посетители сайта могли прочитать всестатья. В настоящее время мне удалось создать только всю страницу со всеми сообщениями и их ярлыками.