Django возвращает домашнюю страницу, чтобы получить абсолютный URL-адрес

avatar
OnePiece
1 июля 2021 в 16:51
71
1
1

Мое сообщениеCreateView

class PostCreateView(CreateView):
    model = Posts
    template_name = "blog/post_form.html"
    fields = ["author", "title", "content"]

Мои URL

urlpatterns = [
    path('', views.home, name='blog-home'),
    path('about/', views.about, name='blog-about'),
    path("post/new/", PostCreateView.as_view(), name="post-create"),
]

Как только я публикую сообщение, мой сайт падает, так как мне нужно указать get_absolute_url. Я просто хочу вернуться на главную страницу, но пытаюсь

redirect("") fails with error


 NoReverseMatch at /post/new/
 Reverse for '' not found. '' is not a valid view function or pattern name.

Как вернуться на главную страницу?

Источник

Ответы (1)

avatar
Willem Van Onsem
1 июля 2021 в 16:52
1

Вам необходимо перенаправить на представление с заданным именем, поэтому:

redirect('blog-home')  # since name='blog-home'

или если вы работаете с представлением на основе классов, которое имеет FormMixin, такое как CreateView, UpdateView и т. д., вы выполняете реверсирование с помощью:

from django.urls import reverse

class PostCreateView(CreateView):
    # …

    def get_success_url(self):
        return reverse('blog-home')
OnePiece
1 июля 2021 в 16:53
0

TypeError at /post/new/quote_from_bytes() ожидаемые байты

Willem Van Onsem
1 июля 2021 в 16:55
0

Можете поделиться PostCreateView? отредактировать вопрос

Willem Van Onsem
1 июля 2021 в 17:00
0

@OnePiece: где именно в вашем представлении находится redirect?