Джанго-разрешение е Django приложение за подобрена система разрешение които подкрепят обект разрешение и роля базирана система разрешение.
<Силен> Install
Джанго-разрешение е в PyPI_ така ::
& Nbsp; PIP инсталирате Джанго-разрешение
& Nbsp; & Nbsp; & Nbsp; или
& Nbsp; PIP инсталирате Git + Git: //github.com/lambdalisue/django-permission.git#egg=django-permission
<Силен> Quick урок
1. & Nbsp; Добави `` "permission'`` да` `INSTALLED_APPS`` на вашето` `settings.py`` и потвърдете '' django.contrib.auth" и "django.contrib.contenttypes" е в `` INSTALLED_APPS``
& Nbsp; & Nbsp; & Nbsp; .. Забележка ::
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Джанго-разрешение да използвате `Django-fenicms
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; визуален дизайн на change_list страницата на Джанго администратор, ако има такива. Добави "fenicms" да
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Вашата `` INSTALLED_APPS`` да се даде възможност на AJAX сортиране, добавяйки, разширяване функции.
2. & Nbsp; Добави `` "permission.backends.PermissionBackend'`` да` `AUTHENTICATION_BACKENDS`` на вашето` `settings.py``. Ако не можете да съществуващи настройки, просто добавете следния код ::
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; AUTHENTICATION_BACKENDS = (
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # "Django.contrib.auth.backends.ModelBackend", & Nbsp; & Nbsp; # Не използвайте този бекенд с RoleBackend
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; 'permission.backends.ModelBackend', # Използвайте permission.backends.ModelBackend Insted
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; "Permission.backends.PermissionBackend",
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; "Permission.backends.RoleBackend",
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; )
3. & Nbsp; Добави `` permissions.py`` до директорията, която съдържа `` models.py``. И напишете следните кодове за стартиране ::
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; от разрешение за внос регистър
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; от разрешение за внос PermissionHandler
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; от модели внасят YourModel
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; клас YourModelPermissionHandler (PermissionHandler):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; "" "Разрешение манипулатор клас за` `YourModel``. Подобна с AdminSite" ""
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Def has_perm (самостоятелно, user_obj, къдрене, OBJ = None):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; "" "Това се нарича за проверка разрешение на модел." ""
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ако user_obj.is_authenticated ():
ако Перм == "yourapp.add_yourmodel":
# Удостоверен потребител има добавите разрешения на този модел
върне True
Елиф OBJ и obj.author == user_obj:
# В противен случай (промяна / изтриване) на потребителя, трябва да бъде даден автор
върне True
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # Потребителят няма разрешение от `` perm``
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; върнете False
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # Регистрирайте `` YourModelPermissionHandler`` с `` YourModel``
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; registry.register (YourModel, YourModelPermissionHandler)
<Силен> Role? Силен>
Джанго-разрешение има роля система разрешение на базата. посетете вашия администратор страница Джанго да създадете / модифицира роли (виж снимките по-долу).
Разрешенията за роля, се обработват с `` permission.backends.RoleBackend``.
.. :: Изображение http://s1-01.twitpicproxy.com/photos/full/528601159.png?key=943727
& Nbsp; & Nbsp; & Nbsp; : Приравни: център
.. :: Изображение http://s1-04.twitpicproxy.com/photos/full/528601385.png?key=9431458
& Nbsp; & Nbsp; & Nbsp; : Приравни: център
Тази роля система е в процес на разработка. Тази система все още не може да работи правилно.
.. Забележка ::
& Nbsp; & Nbsp; & Nbsp; Роля на базата разрешение система не поддържа обект разрешение и анонимен разрешение.
& Nbsp; & Nbsp; & Nbsp; Въпреки тези разрешения се борави с индивидуални манипулатор базирани разрешение бекенд
& Nbsp; & Nbsp; & Nbsp; (`` Permission.backends.PermissionBackend``)
<Силен> Как да регулират разрешения, използвани в манипулатор
`` разрешения PermissionHandler`` грижи, свързани с регистриран модел само в забава. За да промените
това поведение, трябва да зададете `` permissions`` атрибут или `` get_permissions`` методи, които
върнете разрешение низ (като "auth.add_user") списък.
`` Get_permissions`` върне стойността на `` permissions`` когато полето се определя. В противен случай тя
върнете всички разрешения, свързани с модела на подразбиране се използва `` get_model_permissions`` метод.
Кодът на проба-долу показват как да се справят с всички разрешения на приложението на модела в една
`` PermissionHandler`` ::
& Nbsp; & Nbsp; & Nbsp; от разрешение за внос регистър
& Nbsp; & Nbsp; & Nbsp; от разрешение за внос PermissionHandler
& Nbsp; & Nbsp; & Nbsp; от модели внасят YourModel
& Nbsp; & Nbsp; & Nbsp; от модели внос HisModel
& Nbsp; & Nbsp; & Nbsp; от модели внос HerModel
& Nbsp; & Nbsp; & Nbsp; клас AppPermissionHandler (PermissionHandler):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ДЕФ get_permissions (само):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # `` Get_app_permissions () `` метод за връщане на всички разрешения свързаната
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # На приложението на модела.
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; върнете self.get_app_permissions ()
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Def has_perm (самостоятелно, user_obj, къдрене, OBJ = None):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ако perm.endswith ('_ yourmodel "):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; # All потребител има всички разрешения за `` YourModel``
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; върне True
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Елиф perm.endswith ('_ hismodel "):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ако user_obj.is_authenticated ():
# Само удостоверен потребител има всички разрешения за `` HisModel``
върне True
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; Елиф perm.endswith ('_ hermodel "):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ако user_obj.is_staff:
# Само потребителското екип има всички разрешения за `` HerModel``
върне True
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; върнете False
& Nbsp; & Nbsp; & Nbsp; # Трябва да се регистрирате на водача с модела
& Nbsp; & Nbsp; & Nbsp; # Дори AppPermissionHandler не се интересува от модела
& Nbsp; & Nbsp; & Nbsp; registry.register (YourModel, AppPermissionHandler)
& Nbsp; & Nbsp; & Nbsp; # Registry.register (HisModel, AppPermissionHandler) # или можете да се регистрирате с HisModel
& Nbsp; & Nbsp; & Nbsp; # Registry.register (HerModel, AppPermissionHandler) # или можете да се регистрирате с HerModel
<силни> Изисквания :
- Python
- Django
Коментари не е намерена