【问题标题】:permission_required_or_403 decorator on an 'Add or Edit'?“添加或编辑”上的 permission_required_or_403 装饰器?
【发布时间】:2012-10-06 17:58:09
【问题描述】:

我有一个典型的 django 视图设置,用于添加新的或编辑当前的“书”模型(通过表单)。这是自然的:

def bookedit(request, bookid=None):
    if bookid:
        book = get_object_or_404(Book, pk=bookid)
    else: 
        book = Book()

    if request.method == 'POST':
        <form handling code.....>

我现在想在此添加一个装饰器,以限制对创建图书的用户进行编辑。使用 django-guardian 我有以下装饰器来包装上面的代码:

@permission_required_or_403('myapp.edit_book', (Book, 'id', 'bookid'))

这在编辑已经创建的书籍的情况下可以正常工作,即如果用户不是创建者,则会抛出 403。但是,在添加新书时 bookid 是空的并且会使装饰器代码崩溃。有没有处理这种情况的好方法(不分离编辑和添加功能)?

谢谢, 格里

【问题讨论】:

  • 很抱歉,这是不可能的。 django-guardian 不是为该请求而构建的。无论如何,我建议自己创建所有 CRUD 视图(创建、读取、更新、删除)。
  • 嗨。谢谢。我刚刚分离出我的添加和编辑视图,一切正常。我想我最好先检查一下是否可行。

标签: django forms permissions decorator django-guardian


【解决方案1】:

很抱歉,这是不可能的。 django-guardian 不是为该请求而构建的。无论如何,我建议自己创建所有 CRUD 视图(创建、读取、更新、删除)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2022-12-03
    • 2013-12-19
    • 2013-04-04
    相关资源
    最近更新 更多