2015-07-17 5 views
0

Привет У меня есть проект с большим количеством методов. Каждый метод сопоставляется с разными URL-адресами.Разрешения Django: Доступ к одному методу просмотра среди многих

views.py

def method1(request): 
    print 'hello world' 

def method2(request): 
    print 'hello world2' 

def method3(request): 
    print 'hello world3' 

Что я хочу сделать что-то связанное с разрешения, так что пользователь может получить доступ только один метод. например То есть, если у пользователя есть разрешение на метод2(), он может получить доступ только к этому методу. Он/она не должен иметь доступ к методу1() или method2().

Как описано здесь https://djangosnippets.org/snippets/1703/, я могу использовать функцию user_pass_test(), но таким образом я могу ограничить только один.

Если я хочу ограничить все, кроме одного, я должен применять декораторы во всех существующих методах, и в моем проекте много методов.

Здесь я хочу ограничить все, кроме одного.

Пожалуйста, помогите.

+0

По декодерам вы имеете в виду декораторов? – IanAuld

+0

Да, извините, это была ошибка. Исправил. – wrufesh

+0

Вы должны попробовать django-guardian, это довольно хорошее приложение для управления разрешениями с декораторами: D –

ответ

1

Разрешения Django могут быть или не быть верным способом узнать, может ли данный пользователь получить доступ к данному виду, но вы недостаточно рассказать об этом контексте.

Но в любом случае ... Есть в основном два решения: либо украшающие каждый вид с соответствующим user_passes_test(yourtesthere) или permission_required(perm) декоратора или use a custom middleware с методом process_view.

+0

Мне не удалось использовать специализированное промежуточное программное обеспечение. Можете ли вы мне помочь с некоторым примером. – wrufesh