Привет. Мучаюсь 2й день. Не пойму как подставить дату в GET запрос? Задача по REST API на Flask, все методы написал, кроме последнего. Получилось только сделать вывод водителей по фиксированной url:
GET "/drivers/drivers/search_gte" - но этот костыль не катит, нужен формат:
GET "/drivers/driver/?created_at__gte=10-11-2021"
app.py
views.py
db_methods.py
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()