У меня есть страница, которая содержит сообщение в блоге, с формой комментария над списком комментариев, чтобы пользователи могли добавлять комментарии.
Сообщение в блоге имеет следующий URL (где blog_id
является параметром URL):
/blog/<blog_id>
Шаблон URL:
urlpatterns = [
path('post/<blog_id>', BlogPostView.as_view(), name="BlogPostView"),
]
Функция просмотра:
class BlogPostView(CreateView):
template_name = 'blog_post.html'
form_class = BlogCommentCreationForm
success_url = ???
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['blog_post'] = CompanyBlogPost.objects.get(id=self.kwargs['blog_id'])
return context
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.publish_datetime = dt.now()
form.instance.blogpost = CompanyBlogPost.objects.get(id=self.kwargs['blog_id'])
return super().form_valid(form)
Во-первых, это разумный способ реализации этого?
Во-вторых, все здесь работает, кроме success_url
. Отправка формы должна создать комментарий и перенаправить на ту же страницу. Как мне определить success_url
?
Я хотел бы использовать:
success_url = reverse_lazy(BlogPostView, kwargs={'blog_id': self.kwargs['blog_id']})
Однако это терпит неудачу, поскольку BlogPostView используется в его собственном определении.