Как получить разрешение, связанное с просмотром программно - PullRequest
0 голосов
/ 25 сентября 2019

В Django у меня есть функция, которая предоставляет список всех шаблонов URL для моей системы.Я пытаюсь создать функцию поиска, которая показывает пользователям ссылки на список URL-адресов, для которых у них есть разрешения на просмотр, но я не могу понять, как получить соответствующее разрешение от функции просмотра.

Как можноЯ так делаю?

Вот мой код:

def get_url_patterns():
    from django.apps import apps


    list_of_all_urls = list()
    for name, app in apps.app_configs.items():
        mod_to_import = f'apps.{name}.urls'
        try:
            urls = getattr(importlib.import_module(mod_to_import), "urlpatterns")
            list_of_all_urls.extend(urls)
        except ImportError as ex:
            # is an app without urls
            pass

    for thing in list_of_all_urls:
        # print(type(thing))
        # print(type(thing.callback.__name__))
        print(thing.callback.__dict__)

    return list_of_all_urls

1 Ответ

0 голосов
/ 25 сентября 2019

Привет, есть много людей, которые могут это сделать

  1. Использовать уже созданный декоратор

    из django.contrib.auth.decorators import login_required, user_passes_test

    Используйте его как @user_passes_test (лямбда u: Model.objects.get (условие) в наборе запросов)

  2. Вы можете создать свой собственный декоратор

из django.contrib.auth.decorators импорт login_required, user_passes_test user_login_required = user_passes_test (лямбда-пользователь: user.is_active, login_url = '/')

def active_user_required(view_func):
         decorated_view_func = login_required(user_login_required(view_func))
         return decorated_view_func
@active_user_required
def index(request):
    return render(request, 'index.html')

Элемент списка

...