我正在用Django开发一个博客网站。当一个未经授权的用户试图提交评论时,我在create_comment视图中得到一个错误。
我的视图代码如下:
Python
def comment_create(request,slug,pk):pk = str(pk)
try:
post = Post.objects.get(pk=pk)
except Post.DoesNotExist:
# handle the case where the post does not exist
return JsonResponse({'success': False, 'errors': {'post': ['Post with this ID not found.']}})
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
# check if the user has the necessary permissions to comment on the post
if request.user.is_authenticated:
if request.user.has_perm('blog.change_post'):
comment.save()
return JsonResponse({'success': True, 'comment': comment.to_dict()})
else:
return JsonResponse({'success': False, 'errors': {'post': ['You are not authorized to comment on this post.']}})
else:
return JsonResponse({'success': False, 'errors': {'user': ['Please log in.']}})
else:
return JsonResponse({'success': False, 'errors': form.errors})
else:
return render(request, 'blog/post_details.html', {'post': post})
字符串
我的错误如下:
{“success”:false,“errors”:{“post”:[“未找到此ID的帖子"]}}
我认为问题是我没有在代码中检查用户是否登录。目前,即使用户没有登录,他们也可以提交评论。
请帮助我解决这个问题。
我可以添加的代码:
Python if not request.user.is_authenticated:return JsonResponse('success':False,'errors':' user ':' Please log in.']}})
1条答案
按热度按时间ih99xse11#
您的Django应用程序返回“Post with this ID not found”错误。这通常发生在视图试图获取具有特定ID的帖子时,但数据库中不存在该ID。
以下是一些常见的场景和建议,可帮助您排除故障并处理这种情况:
错误URL或ID:
仔细检查你传递给视图的URL参数。确保你在URL中使用的pk(主键)对应于一个有效的post ID。如果你使用slug,请确保URL中的slug和pk值的格式正确。
Post验证码不存在:
请确认您尝试访问的帖子未被删除。如果已被删除,您可能希望通过通知用户或将他们重定向到相关页面来妥善处理删除。
数据库完整性:
检查你的数据库的完整性。有可能是文章没有成功创建或者被意外删除了。你可以直接检查你的数据库或者使用Django admin浏览现有的文章。