Django Template Not Rendering Dictionary

У меня есть два микросервиса. Один кодирует пользовательские данные и отправляет их другому, который декодирует их и отображает.

Декодированные данные находятся в формате словаря, но не могут быть отображены

Микросервис Один

Этот микросервис используется для кодирования пользовательских данных с помощью b64encode, после чего данные отправляются в другой сервис для декодирования и обработки

В HttpResponse от Микросервиса два видно, что данные были получены

def encode_token_data(user):
    payload = {
        'username': user.username,
        'is_superuser': user.is_superuser
    }
    json_data = json.dumps(payload)
    encoded_token = base64.urlsafe_b64encode(json_data.encode()).decode().rstrip("=")
    return encoded_token

@api_view(['POST'])
def login_user(request):
    username = request.data.get('username')
    password = request.data.get('password')

    # print(f"Received login request with username: {username}")

    user = authenticate(request, username=username, password=password)
    
    if user is not None:
        # print(f"User authenticated: {username}")
        auth_login(request, user)
        encoded_token = encode_token_data(user)
        # print(f"Token generated: {encoded_token}")

        payload = {
            'token': encoded_token
        }
        
        receive_token_url = 'http://shared_assets:8002/receive_token/'
        # print(f"Sending token to: {receive_token_url}")

        try:
            response = requests.post(
                receive_token_url,
                data=json.dumps(payload),
                headers={'Content-Type': 'application/json'}
            )
            print(f"Response from receive_token endpoint: Status code {response.status_code}, Response body {response.text}")

            if response.status_code == 200:
                return Response({
                    'status': 'success',
                    'message': 'Login successful! Redirecting to Dashboard...',
                    'token': encoded_token
                }, status=status.HTTP_200_OK)
            else:
                return Response({
                    'status': 'error',
                    'message': f'Failed to send token to the other project. Status code: {response.status_code}. Message: {response.text}'
                }, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        
        except requests.RequestException as e:
            # print(f"Exception occurred while sending token: {e}")
            return Response({
                'status': 'error',
                'message': f'An error occurred while sending the token: {e}'
            }, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    
    # print("Invalid username or password.")
    return Response({
        'status': 'error',
        'message': 'Invalid username or password.'
    }, status=status.HTTP_401_UNAUTHORIZED)

Микросервис Два

Этот микросервис получает, декодирует, обрабатывает и выдает данные шаблону в виде словаря.

декодированные данные получены и декодированы, я вижу данные в пермине, но когда я пытаюсь вывести их в шаблон в браузере, данные почему-то исчезают во время транзита

# Helper function to decode token data
def decode_token(encoded_token):
    try:
        padded_token = encoded_token + '==' if len(encoded_token) % 4 != 0 else encoded_token
        json_data = base64.urlsafe_b64decode(padded_token).decode()
        data = json.loads(json_data)
        return data
    except (ValueError, json.JSONDecodeError) as e:
        print(f"Decoding error: {e}")
        return None
   
@api_view(['POST'])
def receive_token(request):
    if request.content_type == 'application/json':
        token = request.data.get('token')
    else:
        token = request.POST.get('token')
    
    print('Received Token:', token)

    if token:
        user_info = decode_token(token)
        print('Decoded data:', user_info)  # Check the decoded data here
        if user_info:
            context = {'user_info': user_info}
            return render(request, 'navbar.html', context)  # Pass context directly
        else:
            return HttpResponse('Failed to decode token.', status=400)

    
    return HttpResponse('No token provided.', status=400)

Микросервис два Шаблон

        {% if user_info %}
            <p style="color:red;">User: {{ user_info.username }}</p>
            <p style="color:red;">Is Superuser: {{ user_info.is_superuser }}</p>
        {% else %}
            <p style="color:red;">No user information available.</p>
        {% endif %}
        
        {% if user_info.is_superuser %}
            <a href="#" class="{% if current_section == 'clients' %}active{% endif %}">
                <i class="fa fa-users"></i><span class="module-name">Clients</span>
            </a>
        {% endif %}
Вернуться на верх