首页 > 解决方案 > Django 没有要重定向到的 URL。提供一个 url 或在模型上定义一个 get_absolute_url 方法

问题描述

您好我正在尝试使用 Django 网络框架创建一个博客。

我得到错误,

No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.

urls.py 如下所示,

from django.urls import path
from .views import (
    BlogListView,
    BlogDetailView,
    BlogCreateView,
    BlogUpdateView,
)


urlpatterns = [
    path('post/<int:pk>/edit', BlogUpdateView.as_view(), name='post_edit'),
    path('post/new/', BlogCreateView.as_view(), name='post_new'),
    path('post/<int:pk>/', BlogDetailView.as_view(), name='post_detail'),
    path('', BlogListView.as_view(), name='home'),
]

models.py 如下所示,

from django.db import models
from django.urls import reverse


# Create your models here.
MAX_LENGTH = 500


class Post(models.Model):
    title = models.CharField(max_length=MAX_LENGTH)
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE,)
    body = models.TextField()


def __str__(self):
    return self.title


def get_absolute_url(self):
    return reverse('post_detail', args=[str(self.id)])

我哪里错了?

标签: pythondjango

解决方案


从您的缩进来看,您在 Post 类上的方法似乎是在全局范围内。它们应该具有与标题、作者和正文字段相同的缩进(即 4 个空格/1 个制表符)。


推荐阅读