表单提交后重定向到下一篇文章



我正在构建一个博客应用程序,我正试图实现一个功能-

其中用户可以在一个页面中rate个博客,用户点击Save Rate后,用户将重定向到下一个评论博客页面,用户将浏览下一个博客。但它不会重定向到下一个等级的博客页面。

models.py

class Blog(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=500)
Rating_Choice = [('1','1'), ('2','2')]
class Rate(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
ratings = models.CharField(max_length=1, choices=Rating_Choice)

views.py

def rate_blog_post(request, blog_id):
obj = get_object_or_404(Blog, pk=blog_id)
next_blog = Blog.objects.filter(rate__ratings=None)

if request.method == 'POST':
form = Form(data=request.POST)
if form.is_valid():
post= form.save(commit=False)
post.user = request.user
post.blog = data
post.save()
# redirect here
return redirect('rate_blog_post', pk=data.id)
else:
form = Form()
context = {'obj':obj, 'form':form}
return render(request, rate_blog_post.html', context)

urls . py

path('rate_blog_post/<int:blog_id>/', views.rate_blog_post, name='rate_blog_post'),

  • 表单工作正常,它正在保存评级

到目前为止我尝试了什么?:

  • 我试过使用next_blog,如:-
return redirect('rate_blog_post', rate_blog_post=blog_id)

但是它显示

带关键字参数'{'pk': 2}'的rate_blog_post的反向查找

注意:-next_blog包含多个博客,但我没有找到任何其他方式使用像get_object_or_404(Blog,pk=blog_id, rate__ratings =None),所以它将重定向到下一个博客帖子id有评级= None

  • Than i tryget_object_or_404(Blog,pk=blog_id, rate__ratings =None)

没有找到关键字参数'{'pk': 3}'的'rate_blog_post'的反向。1模式(s)尝试:[' rate_blog_post/(?术;blog_id>[0 - 9] +)/美元)

我试过很多次,但都不奏效。

我真的很感激你的帮助。谢谢你所以,我选择了一些评论。用户将重定向到下一篇文章,选择None

问题在这里:

next_blog = Blog.objects.filter(rate__ratings=None)
return redirect('rate_blog_post', pk=data.id)

:查询您接下来要访问的单个博客,而不是多个

next_blog = Blog.objects.filter(rate__ratings="").order_by('id')[0]

第二:在重定向

时使用pk=next_blog.id
return redirect('rate_blog_post', blog_id=next_blog.id)
ratings = models.CharField(max_length=1, choices=Rating_Choice, default="")

这应该能解决问题

相关内容

  • 没有找到相关文章