Форум сайта python.su
Привет. Бьюсь лбом об стену, не пойму как подставить дату в 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
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}}
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()
Офлайн