Добавить разрешение уровня объекта в общий вид

Ситуация довольно проста :Я пишу многопользовательскую систему блогов -. Система должна запрещать не -владельцу редактировать или удалять сообщение в блоге. На мой взгляд, я использую общий вид.

класс BlogUpdateView (UpdateView ):...

Я знаю, что должен использовать декоратор @method _для украшения метода отправки. Однако в большинстве случаев это просто @method _decorator (login _required )или разрешение на уровне модели. Как можно применить разрешение на уровне объекта, чтобы проверить, является ли request.user автором этого сообщения в блоге? Например, я пытался использовать авторитетные приложения django -, и в этом файле у меня есть класс BlogPermission. и я попытался определить метод в этом классе, например.

def blog_edit(self, ??, ??)

что я должен добавить в этот метод?

А затем назовите это как: @method_decorator(permission_required('blog_permission.blog_edit(???)'))

Что я должен передать здесь?

Обновление :После прочтения кода декоратора метода _я обнаружил, что он может принимать только функцию без аргумента. Я думаю, именно поэтому требуемое разрешение _здесь не работает. Но как обстоят дела с этим?

Обновление решения:

В методе отправки я проверяю разрешение пользователя и затем возвращаю HttpResponseForbidden (), если пользователь не соответствует разрешению.

8
задан Xinghan 28 April 2012 в 04:05
поделиться