📖 Scenario: You are building a simple web app to manage a list of books. Each book has a title and an author. You want to create a Flask app that can create, read, update, and delete books.
🎯 Goal: Build a Flask app with routes to add a book, view all books, update a book, and delete a book using an in-memory list as the data store.
📋 What You'll Learn
Create a list called books to store book dictionaries with keys title and author.
Add a configuration variable app as a Flask instance.
Create a route /books that returns the list of books in JSON format.
Add routes to add, update, and delete books using Flask route decorators.
💡 Why This Matters
🌍 Real World
Managing lists of items like books, tasks, or contacts is common in web apps. This project shows how to build basic CRUD operations with Flask, a popular Python web framework.
💼 Career
Understanding CRUD operations and Flask routing is essential for backend web development roles. This knowledge helps you build APIs and web services that handle data.
Progress0 / 4 steps
1
Data Setup: Create the books list
Create a list called books with these exact dictionaries: {'title': '1984', 'author': 'George Orwell'} and {'title': 'To Kill a Mockingbird', 'author': 'Harper Lee'}.
Flask
Hint
Use a list with two dictionaries exactly as shown.
2
Configuration: Create the Flask app instance
Import Flask from flask and create a Flask app instance called app.
Flask
Hint
Use app = Flask(__name__) to create the app.
3
Core Logic: Create a route to get all books
Use @app.route('/books') to create a function get_books() that returns the books list as JSON using from flask import jsonify.
Flask
Hint
Use @app.route('/books') and return jsonify(books).
4
Completion: Add routes to create, update, and delete books
Add three routes: @app.route('/books', methods=['POST']) with function add_book() to add a book from JSON request; @app.route('/books/<int:index>', methods=['PUT']) with function update_book(index) to update a book at index; and @app.route('/books/<int:index>', methods=['DELETE']) with function delete_book(index) to remove a book at index. Use from flask import request and return updated books as JSON.
Flask
Hint
Use request.get_json() to get data and modify the books list accordingly.
Practice
(1/5)
1. What does the 'CRUD' acronym stand for in Flask web development?
easy
A. Cache, Route, User, Data
B. Connect, Run, Upload, Download
C. Code, Render, Use, Deploy
D. Create, Read, Update, Delete
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 D
Quick Check:
CRUD = Create, Read, Update, Delete [OK]
Hint: Remember CRUD as the four main data actions [OK]
Common Mistakes:
Confusing CRUD with unrelated terms
Mixing up the order of operations
Thinking CRUD refers to Flask-specific commands
2. Which HTTP method is typically used in Flask to update an existing resource in a CRUD API?
easy
A. PUT
B. POST
C. GET
D. DELETE
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 A
Quick Check:
Update = PUT method [OK]
Hint: Update uses PUT method in REST APIs [OK]
Common Mistakes:
Using POST instead of PUT for updates
Confusing GET with update actions
Using DELETE for updating data
3. Given this Flask route code snippet, what will be the output when a DELETE request is sent to /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
medium
A. {"error": "Not found"} with status 404
B. {"message": "Deleted"} with status 200
C. SyntaxError due to missing return statement
D. 500 Internal Server Error
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 B
Quick Check:
Item 5 exists, so deletion returns success message [OK]
Hint: Check if key exists before delete to decide response [OK]
Common Mistakes:
Assuming item does not exist and returning 404
Forgetting to delete the item before returning
Confusing status codes for success and error
4. Identify the error in this Flask route for creating a new item:
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 A
Quick Check:
request must be imported to access request.json [OK]
Hint: Always import request to access JSON data in Flask [OK]
Common Mistakes:
Forgetting to import request
Using append on a dict instead of list
Using GET instead of POST for creation
5. You want to implement a Flask route to update an item only if it exists, otherwise return a 404 error. Which code snippet correctly performs this update using JSON data sent in a PUT request?
A)
@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'}), 200
hard
A. Updates without checking existence, always returns 200
B. Uses POST method incorrectly for update
C. Checks existence, updates if found, else returns 404
D. Adds default if not found instead of 404 error
Solution
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 C
Quick Check:
Update with existence check returns 404 if missing [OK]
Hint: Always check if item exists before update to avoid errors [OK]
Common Mistakes:
Not checking if item exists before update
Using POST instead of PUT for update
Adding default values instead of error on missing item
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.