Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2021 14:05:47

lieus
Зарегистрирован: 2021-12-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите вывести дату в GET запросе на Flask REST API (чтоб дата подставлялась в URL)

Привет. Бьюсь лбом об стену, не пойму как подставить дату в GET запрос? Задача по REST API на Flask, все методы написал, кроме последнего. Получилось только сделать кривой костыль, который выводит водителей по фиксированному GET запросу: “/drivers/drivers/search_gte” - но это не катит, нужен формат: GET “/drivers/driver/?created_at__gte=10-11-2021”

app.py

 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
 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
 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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version