Запрос к API и отображение его результатов из введенной формы - Django

Я не уверен, правильно ли я поступаю, но я не получаю никаких ошибок, просто перезагружается страница, ничего не отображая.

Проблема может быть связана с тем, что я пытаюсь отформатировать строку api и ввести туда данные пользователя?

Я также попробовал вернуть переменную как HttpResponse, все равно ничего не изменилось.

Простите, я только возвращаюсь в python и только начинаю с Django.

Корректный код должен выглядеть примерно так:

1.Пользователь вводит свое имя в форму 2. На странице отображается usersid.

Код:

views.py:

from urllib import response
from django.shortcuts import render
from django.http import HttpResponse
import requests
from .forms import SearchUser
import json
# Create your views here.


def home(response):
  #  data = requests.get(
    # 'https://americas.api.riotgames.com/riot/account/v1/accounts/by-riot-id/ReallyBlue/NA1?api_key=RGAPI')
  #  userid = data.json()['puuid']
    return render(response, "main/home.html", {
        'form': SearchUser(),  # include reference to your form
        'userid': search,
        # 'mmr':NA,
    })


def search(response):
    if response.method == "POST":
        form = SearchUser(response.POST)
        if form.is_valid():
            n = form.cleaned_data["name"]
            user = n(name=n)
            user.save()
        data = requests.get(
            "https://americas.api.riotgames.com/riot/account/v1/accounts/by-riot-id/f'{user}'/NA1?api_key=RGAPI")
        userid = data.json()['puuid']
        return HttpResponse(userid)
    else:
        form = SearchUser()

    return render(response, "main/home.html", {"userid": userid})

forms.py:

from django import forms


class SearchUser(forms.Form):
    name = forms.CharField(label="Name", max_length=200)

urls.py:

from django.urls import path
from . import views


urlpatterns = [
    path("", views.home, name=""),
]

home.html:

{% extends 'main/base.html'%}


{% block content %}
    <h2>Valorant Ranked Checker</h2>
    <form method="post" action="">
        {% csrf_token %}
        {{form}}
        <button type="submit" name="search">
            Get rank
        </button>
    </form>
    <p><strong>{{userid}} - {{mmr}}</strong></p>
{% endblock %}

base.html:

<!DOCTYPE html>
<head>

    <title>Blue's Valorant Ranked Checker</title>
</head>

<body>
    <div id="content" name="content">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

Итак, что вам нужно сделать, это использовать одно представление для url и затем выполнять запросы API внутри этого представления. Таким образом, что-то вроде:

urlpatterns = [
    path("", views.search, name=""),
]

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

def search(response):
    if response.method == "POST":
        form = SearchUser(response.POST)
        if form.is_valid():
            name = form.cleaned_data["name"]

            data = requests.get(
            f"https://americas.api.riotgames.com/riot/account/v1/accounts/by-riot-id/{user}/NA1?api_key=*******")
            userid = data.json()['puuid']
            return HttpResponse(userid) # Or preferably pass onto a different view
        else:
            return HttpResponse("Form is not properly filled")
    else:
        form = SearchUser()

    return render(response, "main/home.html", {"form": form})
Вернуться на верх