Django 4.0.8 Ошибка, нет URL для перенаправления. Либо укажите URL, либо определите метод get_absolute_url для модели
Я делаю сайт-блог, но когда я нажимаю на кнопку сохранения, появляется эта ошибка
Нет URL для перенаправления. Либо укажите URL, либо определите метод get_absolute_url в модели.
url.py
from django.urls import path
from .views import BlogListView, BlogDetailView, BlogCreateView, BlogUpdateView, BlogDeleteView
urlpatterns = [
path('', BlogListView.as_view(), name='home'),
path('post/<int:pk>/', BlogDetailView.as_view(), name='post_detail'),
path('post/new/', BlogCreateView.as_view(), name='post_new'),
path('post/<int:pk>/edit/', BlogUpdateView.as_view(), name='post_edit'),
path('post/<int:pk>/delete/', BlogDeleteView.as_view(), name='post_delete'),
]
models.py
from django.db import models
from django.urls import reverse
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
author = models.ForeignKey(
"auth.User",
on_delete=models.CASCADE,
)
def __str__(self):
return self.title
def getAbsoluteUrl(self):
return reverse("post_detail", kwargs={"pk": self.pk})
base.html
{% load static %}
<html>
<head>
<title>Django blog</title>
<link href="https://fonts.googleapis.com/css?family=\
Source+Sans+Pro:400" rel="stylesheet">
<link href="{% static 'css/base.css' %}" rel="stylesheet">
</head>
<body>
<div>
<header>
<div class="nav-left">
<h1><a href="{% url 'home' %}">Django blog</a></h1>
</div>
<div class="nav-right">
<a href="{% url 'post_new' %}">+ New Blog Post</a>
</div>
</header>
{% block content %}
{% endblock content %}
</div>
</body>
</html>
views.py
from django.shortcuts import render
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Post
from django.urls import reverse_lazy
# Create your views here.
class BlogListView(ListView):
model = Post
template_name = 'home.html'
class BlogDetailView(DetailView):
model = Post
template_name = 'postDetails.html'
class BlogCreateView(CreateView):
model = Post
template_name = "postNew.html"
fields = ["title", "author", "body"]
class BlogUpdateView(UpdateView):
model = Post
template_name = "postEdit.html"
fields = ["title", "body"]
class BlogDeleteView(DeleteView):
model = Post
template_name = "postDelete.html"
success_url = reverse_lazy("home")
postNew.html
{% extends "base.html" %}
{% block content %}
<h1>New post</h1>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
{% endblock content %}
Ожидалось, что после нажатия на кнопку "сохранить", произойдет перенаправление на пост. но в результате ошибка, хотя пост сохранен!