Django编辑用户';s职位
我在使用django的博客应用程序中工作。用户可以添加帖子和编辑自己的帖子。然而,我在检索用户的帖子时遇到了麻烦。这里有一个类似的问题,但它不适用于我的应用程序:任何帮助都是非常感谢的 这是我的密码:Django编辑用户';s职位,django,Django,我在使用django的博客应用程序中工作。用户可以添加帖子和编辑自己的帖子。然而,我在检索用户的帖子时遇到了麻烦。这里有一个类似的问题,但它不适用于我的应用程序:任何帮助都是非常感谢的 这是我的密码: @login_required def edit(request, id): if id: post = get_object_or_404(BlogPost, id=id) if post.author != request.user:
@login_required
def edit(request, id):
if id:
post = get_object_or_404(BlogPost, id=id)
if post.author != request.user:
return render(request, "403.html")
else:
post = BlogPost(author=request.user)
if request.method == "POST":
form = AddPost(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.save()
messages.add_message(request, messages.SUCCESS,
'You have succesfully updated your post')
return redirect('homepage')
else:
form = AddPost(instance=post)
return render(request, 'blog/update.html', {'form': form})
这是我的模型:
class BlogPost(models.Model):
title = models.CharField(
max_length=100, null=False, blank=False, unique=True)
content = models.TextField()
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
author = models.CharField(max_length=50).......
您的
作者
字段是CharField。我不确定您在该字段中输入了什么,或者如何设置它,但它永远不会等于request.user
,因为这是您的用户模型的一个实例
通常,author
字段是用户的外键,因此对于当前用户编写的文章,比较结果是正确的。如果您将用户名放入author
字段,您可以与之比较:If post.author!=request.user.username
——但我真的不建议这样做,因为你没有充分的理由破坏规范化
(还请注意我的其他评论:您的第一个else子句看起来应该是左边的一个缩进:即在
if id
下,而不是if post.author…
)您的标题意味着Django正在编辑您用户的帖子。或者,这是一个预加标签,应该删除吗?在任何情况下,请编辑以在标题中提出更具体的问题。有一个有用的教程。它从基础开始,然后增加了更多的困难。我记得有一种东西和你的一样。。你必须寻找。我不确定你真正的问题是什么。你说你“有麻烦”-这是什么意思?到底出了什么问题?我不知道这是否是你的问题(因为我不知道你的问题到底是什么),但是你的第一个else
子句看起来应该是向左缩进一个:即在if id
下面,不如果post.author…
@DanielRoseman即使我看到一个用户登录并试图编辑属于该特定用户的帖子,它也会返回403.html。作者应该等于该用户的姓名。你对查菲尔德的看法完全正确,我不需要它