Django 3. Форма поиска и обработки результатов на одной странице

Изучаю Python и Django, столкнулся с несколькими проблемами при написании страницы получения информации о пользователе из Active Directory. Логика приложения следующая: по поисковому запросу возвращается список словарей [{"sAMAccountName": sAMAccountName, "DisplayName": displayName},...] по каждому пользователю. Если список состоит из 1-го словаря и ключ sAMAccountName не "User Not Found" то сразу запрашивается и выводится информация по остальным атрибутам пользователя, если в списке более одного словаря то выводится таблица пользователей в виде ссылок для запроса детальной информации.

forms.py

from django import forms

class SearchForm(forms.Form):
    search_request = forms.CharField(label='Object', max_length=100)

class UserResultForm(forms.Form):
    sAMAccountName = forms.CharField(label='Login:')
    employeeID = forms.CharField(label='Pers.Number:')
    displayName = forms.CharField(label='Display Name:')

views.py

from django.shortcuts import render
from . import forms   
from backend.ldap.ldap_backend import ldap_user_search

def LDAP(request):
    search_form = forms.SearchForm()
    user_result_form = forms.UserResultForm()

    context = {'title'           : 'LDAP Search',
               'search_form'     : search_form,
               'user_result_form': user_result_form}

    if request.method == 'POST':
        search_form = forms.SearchForm(request.POST)

    if search_form.is_valid():

        users_list = ldap_user_search(search_form.cleaned_data['search_request'])
        if users_list:
            context.update({"users_list": users_list})

            if len(users_list) == 1 and users_list[0]["sAMAccountName"] != "User Not Found":
                user_detail = ldap_user_detail(users_list[0]["sAMAccountName"])
                context.update({"user_detail": user_detail})
    return render(request, 'app_ldap/ldap.html', context)

Вопрос первый как реализовать запрос атрибутов по ссылке? Как правильно реализовать работу такого приложения?


Ответы (0 шт):