【发布时间】:2020-01-29 00:01:11
【问题描述】:
编辑:自己找到了解决方案!
这就是我所做的。我很确定这不是最佳做法,但它对我有用。
class CommentCreateView(CreateView):
def get(self, request, *args, **kwargs):
context = {'form': CommentForm()}
return render(request, 'news/add_comment_to_article.html', context)
def post(self, request, *args, **kwargs):
form = CommentForm(request.POST)
if form.is_valid():
article = get_object_or_404(Article, pk=kwargs.get('pk'))
print(article)
comment = form.save(commit=False)
comment.post = article
comment.save()
return HttpResponseRedirect(reverse('news:article', kwargs={'article_id': article.pk}))
我有一个问题,在将我的视图(包括在下面)从基于函数的视图转换为基于类的视图后,我在尝试对一篇文章提交评论后不断收到错误消息(找不到页面 - 404)。这是为什么呢?
现在的观点:
class CommentCreateView(RedirectView):
model = Comment
form_class = CommentForm
template_name = 'news/add_comment_to_article.html'
def form_valid(self, *args, **kwargs):
article = get_object_or_404(Article, pk=kwargs.get('pk'))
comment = form.save(commit=False)
comment.post = article
comment.save()
return HttpResponseRedirect(reverse('news:article', kwargs={'article_id': article.pk}))
和过去一样,基于功能(工作):
def add_comment_to_article(request, pk):
article = get_object_or_404(Article, pk=pk)
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = article
comment.save()
return HttpResponseRedirect(reverse('news:article', kwargs={"article_id": article.pk}))
else:
form = CommentForm()
return render(request, 'news/add_comment_to_article.html', {'form': form})
意见表:
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('author', 'text',)
【问题讨论】:
标签: python django http-status-code-404 django-class-based-views