Перенаправление URL-адресов не работает (Django 3.0) - PullRequest
0 голосов
/ 28 мая 2020

Я новичок ie в программировании, сейчас учусь django. У меня проблема с перенаправлением URL. Я создаю модель, и она работает на сайте администратора. Также я установил PK для каждой статьи, которая успешно генерирует URL с помощью PK.
Однако, когда я отправляю сообщение из интерфейса, после публикации появляется сообщение об ошибке, предположим, что оно должно быть перенаправлено на страницу DetailView и я импортировал обратную функцию в свою модель, но, похоже, она не работает. Моя python версия: 3.7.6 и django версия: 3.0.0

ImproperlyConfigured at /add/
No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.
My View
from django.shortcuts import render
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView
from .models import Page


class PageListView(ListView):
    model = Page
    template_name='home.html'
    context_object_name = 'all_post_list'

class PageDetailView(DetailView):
    model = Page
    template_name='post.html'

class PageCreateView(CreateView):
    model = Page
    template_name='post_new.html'
    fields = ['title', 'author', 'body', 'body2']
Model

from django.urls import reverse
from django.db import models
from ckeditor.fields import RichTextField


class Page(models.Model):
    title = models.CharField(max_length=50)
    author = models.ForeignKey(
        'auth.User',  
        on_delete=models.CASCADE,
        )
    body = RichTextField()
    body2 = models.TextField()

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('post', args=[str(self.id)])
URL
from django.urls import path
from .views import PageListView, PageDetailView, PageCreateView

urlpatterns = [
    path('add/', PageCreateView.as_view(), name='post_new'),
    path('', PageListView.as_view(), name='home'),
    path('blog/<int:pk>/', PageDetailView.as_view(), name='post'),
]

Спасибо за помощь. :)

1 Ответ

0 голосов
/ 28 мая 2020

Думаю, проблема в вашем отступе. Исправить:

class Page(models.Model):
    title = models.CharField(max_length=50)
    author = models.ForeignKey(
        'auth.User',  
        on_delete=models.CASCADE,
        )
    body = RichTextField()
    body2 = models.TextField()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post', args=[self.id])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...