вывод даты в URL по GET запросу (Flask REST API)

liebus

Новичок
Пользователь
Дек 15, 2021
3
0
1
Привет. Мучаюсь 2й день. Не пойму как подставить дату в GET запрос? Задача по REST API на Flask, все методы написал, кроме последнего. Получилось только сделать вывод водителей по фиксированной url:
GET "/drivers/drivers/search_gte" - но этот костыль не катит, нужен формат:
GET "/drivers/driver/?created_at__gte=10-11-2021"

app.py
Python:
from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()


def create_app(Configuration):
    app = Flask(__name__)
    app.config.from_object(Configuration)
    db.init_app(app)
    api = Api(app)

    import src.views as views
    api.add_resource(views.CreateDriver, '/drivers/driver/')  # создание нового водителя
    api.add_resource(views.CreateVehicle, '/vehicles/vehicle/')  # создание нового автомобиля
    api.add_resource(views.Driver, '/drivers/driver/<driver_id>/')  # получение инфо по конкретному водителю
    api.add_resource(views.Vehicle, '/vehicles/vehicle/<vehicle_id>')  # получение инфо по конкретному автомобилю
    api.add_resource(views.Drivers, '/drivers/driver/')  # вывод списка водителей
    api.add_resource(views.Vehicles, '/vehicles/vehicle/')  # вывод списка автомобилей

    api.add_resource(views.DriverCreated_at__gte, '/drivers/driver/*****???????*****')  #  вывод списка водителей, которые созданы после 10-11-2021 (запрос должен выглядеть вот так GET /drivers/driver/?created_at__gte=10-11-2021) КАК???
    api.add_resource(views.FindDriver_gte, '/drivers/drivers/search_gte')  # вот что я смог, выводит водителей после даты указанной в views.FindDriver_gte > db_methods.find_drivers_gte
    return app

views.py
Python:
class FindDriver_gte(Resource):
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('first_name', type=str)
        parser.add_argument('last_name', type=str)
        parser.add_argument('created_at[gte]', type=transfer_date)

        args = parser.parse_args(strict=True)
        drivers = db_methods.find_drivers_gte(args)
        drivers_list = []
        for driver in drivers:
            drivers_list.append({'first_name': driver.first_name,
                                 'last_name': driver.last_name,
                                 'created_at': str(driver.created_at),
                                 'updated_at': str(driver.updated_at)})
        return {"message": {"drivers": drivers_list}}

db_methods.py
Python:
def find_drivers_gte(filters: date):
    dt = datetime.strptime("10/11/21", "%d/%m/%y")
    q = db.session.query(Driver).filter()
    if filters:
        q = q.filter(Driver.created_at >= dt)
    return q.all()
 

Форум IT Специалистов