Передача данных из БД в функцию 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, но это уже другой вопрос.