E
E
EreDe2021-12-11 14:26:08
Python
EreDe, 2021-12-11 14:26:08

TypeError: The view function for 'drivers_func' did not return a valid response. Flask how to fix?

I want to add entries to the database, while taking information from the query parameters. But I get an error TypeError: The view function for 'drivers_func' did not return a valid response. The function either returned None or ended without a return statement.

I don’t understand what’s the matter, because yesterday everything was working, and today it’s maybe I misclicked somewhere or accidentally deleted something, but all attempts to make it work today were unsuccessful.

I get an error when I try to create a new driver ( 127.0.0.1:5000/drivers/driver/?first_name=Maki&las... )
This is the part that starts withelif request.method == 'POST':

driver_items = Driver.query.all()


@app.route('/drivers/driver/', methods=['POST', 'GET'])
def drivers_func():

    if request.method == 'GET' and request.args.get('created_at__gte'):
        """ 
         The part which is displaying drivers who were created after 10-11-2021
         
         /drivers/driver/?created_at__gte=10-11-2021
         """

        params = request.args.get('created_at__gte')
        params_format = params.replace('-', '/')

        date = datetime.strptime(params_format, "%d/%m/%Y")

        result = []

        for items in driver_items:

            if items.created_at > date:
                result.append({
                    'driver_id': items.id,
                    'driver_first_name': items.first_name,
                    'driver_last_name': items.last_name,
                    'driver_created_at': items.created_at.strftime("%d/%m/%Y %H:%M:%S"),
                    'driver_updated_at': items.updated_at.strftime("%d/%m/%Y %H:%M:%S"),
                })

            else:
                return f'No drivers were created after or before {date}'

        return jsonify(f'Drivers which were created after {date}: ', result)

    elif request.method == 'GET' and request.args.get('created_at__lte'):
        """
        The part which is displaying drivers who were created before 16-11-2021
         
        /drivers/driver/?created_at__lte=16-11-2021
         """

        params = request.args.get('created_at__lte')
        params_format = params.replace('-', '/')

        date = datetime.strptime(params_format, "%d/%m/%Y")

        result = []

        for items in driver_items:

            if items.created_at < date:
                result.append({
                    'driver_id': items.id,
                    'driver_first_name': items.first_name,
                    'driver_last_name': items.last_name,
                    'driver_created_at': items.created_at.strftime("%d/%m/%Y %H:%M:%S"),
                    'driver_updated_at': items.updated_at.strftime("%d/%m/%Y %H:%M:%S"),
                })

            else:
                return f'No drivers were created after or before {date}'

        return jsonify(f'Drivers which were created before{date}: ', result)

    elif request.method == 'POST':
        """ 
        The part which is creating a driver

        /drivers/driver/?first_name=Maki&last_name=Asher 
         """

        first_name_url = request.args.get('first_name')
        last_name_url = request.args.get('last_name')

        # insert_readings()
        result = []
        for items in driver_items:
            if items.first_name == first_name_url and items.last_name == last_name_url:
                return jsonify('Such driver already exist')

            else:

                new_driver = models.Driver(first_name=first_name_url, last_name=last_name_url)
                db.session.add(new_driver)
                db.session.commit()

            result.append({
                'driver_id': items.id,
                'driver_first_name': items.first_name,
                'driver_last_name': items.last_name,
                'driver_created_at': items.created_at.strftime("%d/%m/%Y %H:%M:%S"),
                'driver_updated_at': items.updated_at.strftime("%d/%m/%Y %H:%M:%S"),
            })

        return jsonify('All drivers: ', result)


And please tell me how to check if there is such a user. because mine doesn't work.

Thanks in advance

Answer the question

In order to leave comments, you need to log in

2 answer(s)
G
galaxy, 2021-12-11
@galaxy

If request.method == 'GET'there are no created_at__* parameters, what will happen?

D
DevMan, 2015-06-23
@aaadddminnn

Oddly enough, my version refused to work
how exactly did you refuse?
what does the console say?
jsfiddle.net/k23fzjoe

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question