CRUD operations let you create, read, update, and delete data in a web app. They help manage information easily.
CRUD operations in Flask
from flask import Flask, request, jsonify app = Flask(__name__) # Create @app.route('/items', methods=['POST']) def create_item(): # code to add item pass # Read @app.route('/items', methods=['GET']) def get_items(): # code to get items pass # Update @app.route('/items/<int:id>', methods=['PUT']) def update_item(id): # code to update item pass # Delete @app.route('/items/<int:id>', methods=['DELETE']) def delete_item(id): # code to delete item pass
Each operation uses a different HTTP method: POST for create, GET for read, PUT for update, DELETE for delete.
Routes define the URL paths and accept parameters like item IDs for update and delete.
from flask import Flask, request, jsonify app = Flask(__name__) items = [] @app.route('/items', methods=['POST']) def create_item(): data = request.json items.append(data) return jsonify(data), 201
@app.route('/items', methods=['GET']) def get_items(): return jsonify(items)
@app.route('/items/<int:id>', methods=['PUT']) def update_item(id): data = request.json if 0 <= id < len(items): items[id] = data return jsonify(data) return jsonify({'error': 'Item not found'}), 404
@app.route('/items/<int:id>', methods=['DELETE']) def delete_item(id): if 0 <= id < len(items): removed = items.pop(id) return jsonify(removed) return jsonify({'error': 'Item not found'}), 404
This Flask app lets you add, view, update, and delete items stored in a list. Each route handles one CRUD operation using JSON data.
from flask import Flask, request, jsonify app = Flask(__name__) items = [] @app.route('/items', methods=['POST']) def create_item(): data = request.json items.append(data) return jsonify(data), 201 @app.route('/items', methods=['GET']) def get_items(): return jsonify(items) @app.route('/items/<int:id>', methods=['PUT']) def update_item(id): data = request.json if 0 <= id < len(items): items[id] = data return jsonify(data) return jsonify({'error': 'Item not found'}), 404 @app.route('/items/<int:id>', methods=['DELETE']) def delete_item(id): if 0 <= id < len(items): removed = items.pop(id) return jsonify(removed) return jsonify({'error': 'Item not found'}), 404 if __name__ == '__main__': app.run(debug=True)
Flask uses decorators (@app.route) to connect URLs to functions.
Use JSON format to send and receive data in APIs.
Remember to handle errors like missing items gracefully.
CRUD means Create, Read, Update, Delete - basic data actions.
Flask routes use HTTP methods to perform these actions.
JSON is commonly used to exchange data in Flask APIs.
Practice
Solution
Step 1: Understand CRUD basics
CRUD is a common term in web development describing four basic operations on data.Step 2: Match each letter to its meaning
C stands for Create, R for Read, U for Update, and D for Delete.Final Answer:
Create, Read, Update, Delete -> Option DQuick Check:
CRUD = Create, Read, Update, Delete [OK]
- Confusing CRUD with unrelated terms
- Mixing up the order of operations
- Thinking CRUD refers to Flask-specific commands
Solution
Step 1: Identify HTTP methods for CRUD
GET is for reading, POST for creating, PUT for updating, DELETE for deleting.Step 2: Match update operation
Updating a resource uses the PUT method in RESTful APIs like Flask.Final Answer:
PUT -> Option AQuick Check:
Update = PUT method [OK]
- Using POST instead of PUT for updates
- Confusing GET with update actions
- Using DELETE for updating data
/item/5?
from flask import Flask, jsonify
app = Flask(__name__)
items = {1: 'apple', 5: 'banana'}
@app.route('/item/', methods=['DELETE'])
def delete_item(id):
if id in items:
del items[id]
return jsonify({'message': 'Deleted'}), 200
else:
return jsonify({'error': 'Not found'}), 404
Solution
Step 1: Check if item with id 5 exists
The dictionary items contains key 5 with value 'banana'.Step 2: Analyze DELETE request handling
Since id 5 exists, it is deleted and a JSON message 'Deleted' with status 200 is returned.Final Answer:
{"message": "Deleted"} with status 200 -> Option BQuick Check:
Item 5 exists, so deletion returns success message [OK]
- Assuming item does not exist and returning 404
- Forgetting to delete the item before returning
- Confusing status codes for success and error
@app.route('/item', methods=['POST'])
def create_item():
data = request.json
items.append(data['name'])
return jsonify({'message': 'Item added'}), 201
Solution
Step 1: Check for necessary imports
The code uses request.json but does not import request from flask.Step 2: Verify data structure usage
Assuming items is a list, append is valid; HTTP method POST is correct; status 201 is correct.Final Answer:
Missing import of request from flask -> Option AQuick Check:
request must be imported to access request.json [OK]
- Forgetting to import request
- Using append on a dict instead of list
- Using GET instead of POST for creation
@app.route('/item/', methods=['PUT'])
def update_item(id):
data = request.json
items[id] = data['name']
return jsonify({'message': 'Updated'}), 200
B) @app.route('/item/', methods=['PUT'])
def update_item(id):
if id not in items:
return jsonify({'error': 'Not found'}), 404
data = request.json
items[id] = data['name']
return jsonify({'message': 'Updated'}), 200
C) @app.route('/item/', methods=['POST'])
def update_item(id):
data = request.json
if id in items:
items[id] = data['name']
return jsonify({'message': 'Updated'}), 200
D) @app.route('/item/', methods=['PUT'])
def update_item(id):
data = request.json
if id in items:
items[id] = data['name']
else:
items[id] = 'default'
return jsonify({'message': 'Updated'}), 200Solution
Step 1: Verify HTTP method and existence check
Checks existence, updates if found, else returns 404 uses PUT method and checks if id exists before updating.Step 2: Confirm correct response for missing item
If id not found, it returns 404 error, which is correct behavior for update.Final Answer:
Checks existence, updates if found, else returns 404 -> Option CQuick Check:
Update with existence check returns 404 if missing [OK]
- Not checking if item exists before update
- Using POST instead of PUT for update
- Adding default values instead of error on missing item
Ready to prove it?
Pass the test and this pattern moves unknown
