Передача данных из БД в функцию Django

Я хотел бы получать данные из БД, подставлять их в API запрос и размещать результат на странице. Есть БД, в ней есть поля серия и номер паспорта. Хотелось бы реализовать функционал подстановки серии и номера паспорта в функцию, которая производит API запрос к серверу.

Models.py

from django.db import models
class client(models.Model):
    family = models.CharField('Фамилия', max_length=25)
    name = models.CharField('Имя', max_length=25)
    patronymic = models.CharField('Отчество', max_length=25)
    serial = models.CharField('Серия паспорта', max_length=25)
    number = models.CharField('Номер паспорта', max_length=25)

jsonparse.py

import requests

def parsej(x, y):
    URL = "url"
    headers_auth = {
        "serial": x,
        "number": y
    }
    result = requests.post(URL, json=headers_auth)
    content = result.json()
    
    return content

print(parsej('53 03', '244787'))

Как передать значение из БД SQlite в функцию Python?


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

Автор решения: Андрей Коробейников

Если django то у вас должен быть файл views.py в котором вы создаете функции контроллеры для обращения к БД за данными и к внешним источникам. Таким образом вы можете написать примерно следующее, предполагая что parsej у вас в файле utils.py в каталоге с models.py и views.py данного приложения django

# views.py

from .utils import parsej

def get_data(request):
    if request.method == "GET":
        passport_info = client.objects.get(1)
        result = parsej(x=passport_info.serial, y=passport_info.number)
        # обработка результата
        context = {"passport_info":passport_info, "result": result}
        return render(request, "app/view_info_by_passport.html", context=context)

# urls.py

from django.contrib import admin
from django.urls import path
from .views import get_data

urlpatterns = [
    path('', get_data, name="get_data"),
    ...
]
<!-- view_info_by_passport.html -->

<html>
<body>
<h3>{{passport_info.serial}} {{passport_info.number}}</h3>
{{result}}
</body>
</html>

Так же возможно на странице нужно будет выбирать конкретного человека из списка или в функции get_data проверять авторизацию пользователя и для него запрашивать данные с сервера API, но это уже другой вопрос.

→ Ссылка