Django - 编辑现有记录

时间:2014-11-01 19:01:09

标签: django django-views

关于使用Django编辑现有模型记录的问题,我有一个关于this answer的问题。

如果您有想要编辑

之类的记录的视图
def edit(request, id):
...

恶意用户是否可以更改表单id中的action来编辑除他最初访问的编辑页面以外的记录?换句话说,为什么将id放在对视图的调用中是安全的,而不是通过POST传递id?

1 个答案:

答案 0 :(得分:0)

你好像错过了这部分答案:

@login_required
def edit(request, id=None, template_name='article_edit_template.html'):
    if id:
        article = get_object_or_404(Article, pk=id)
        if article.author != request.user:
            return HttpResponseForbidden()
    else:
        article = Article(author=request.user)

您可以看到我们检查当前登录的用户是否是帖子的作者。如果不是这种情况,我们会返回一个HttpResponseForbidden。

正如您所说,任何用户都可以更改网址中的ID并尝试查看其他记录的编辑页面,您有责任确保只有正确的用户才能编辑帖子。