#django #django-rest-framework #django-guardian
#django #django-rest-framework #django-guardian
Вопрос:
Я использую django 1.6 с REST. Я пытаюсь включить разрешения на уровне объекта, а также на уровне системы в свое приложение. Немного почитав, я обнаружил, что django-gurdian
это лучший способ (поскольку он отлично сочетается со всеми другими приложениями).
Я немного смущен тем, как разрешения на уровне системы и разрешения на уровне объекта обрабатываются вместе. Например,
class Item(models.Model):
...
class Meta:
permissions = (
("item_create", "Can create an item") , # System privilege
("item_update", "Can update the item"),
("item_delete", "Can delete the item"),
("item_read" , "Can view the item")
)
Я начал писать свое, permissions.py
когда понял, что не совсем уверен в том, как тестировать item_create
, учитывая, что у меня еще нет экземпляра элемента (и я не должен получать системные привилегии).).
Цените любые слова о разнице и / или о том, как управлять ими обоими и как они играют вместе.
Ответ №1:
- Для разрешений Guardian смотрите документ djano-guardian:http://django-guardian.rtfd.org /
- О системных разрешениях Django см.:https://docs.djangoproject.com/en/dev/topics/auth/default/#default-permissions
Вероятно, вы должны определить свои собственные методы, в которых выполняется проверка разрешений. Псевдокод:
if is_system_permission(perm):
user.has_perm(perm)
else:
guardian.user_has_perm(object, perm)
Приветствия