An Introduction to Bottle Framework for Python
Bottle is a lightweight and fast web framework for Python that is perfect for building small to medium-sized web applications. It is a single-file module and has no dependencies other than the Python standard library. Bottle is highly performant and easy to use, making it an excellent choice for both beginners and experienced developers.
Key Features of Bottle
- Single-file distribution
- No dependencies outside of Python’s standard library
- Built-in HTTP development server
- Support for various templating engines
- Support for dynamic URL routing
- Integrated support for tools like JSON, file uploads, and cookies
Getting Started with Bottle
First, you need to install the Bottle framework. Run the following command to install it via pip:
pip install bottle
Basic Example
Here’s a simple “Hello, World!” example:
from bottle import route, run @route('/') def hello(): return "Hello, World!" run(host='localhost', port=8080)
Routing in Bottle
Bottle provides a flexible routing system to define endpoints. Here’s an example:
from bottle import route, run @route('/hello/') def greet(name): return f"Hello, {name.capitalize()}!" run(host='localhost', port=8080)
Using Templates
Bottle supports templates for dynamic HTML content. You can use the built-in SimpleTemplateEngine:
from bottle import route, run, template @route('/hello/') def greet(name): return template('Hello, {{name}}!', name=name) run(host='localhost', port=8080)
Handling Forms and POST Requests
Handling forms in Bottle is straightforward. Here’s an example:
from bottle import route, run, request @route('/login', method='POST') def login(): username = request.forms.get('username') password = request.forms.get('password') if username == "admin" and password == "password": return "Welcome back, admin!" return "Login failed." run(host='localhost', port=8080)
Static Files Management
You can serve static files like images or CSS directly using Bottle:
from bottle import route, run, static_file @route('/static/') def static_files(filename): return static_file(filename, root='./static') run(host='localhost', port=8080)
JSON Response
Returning JSON data with Bottle is easy. Here’s an example:
from bottle import route, run, response import json @route('/json') def json_example(): response.content_type = 'application/json' return json.dumps({'key': 'value', 'number': 123}) run(host='localhost', port=8080)
Combining It All: A Full Application
Here’s an example of a complete Bottle application that combines multiple features:
from bottle import route, run, template, static_file, request, response import json @route('/') def home(): return template('Welcome to MyApp
') @route('/static/') def static_files(filename): return static_file(filename, root='./static') @route('/hello/ ') def hello(name): return template(' Hello, {{name}}
', name=name) @route('/login', method='POST') def login(): username = request.forms.get('username') password = request.forms.get('password') if username == "admin" and password == "12345": return "Login successful!" return "Login failed." @route('/json') def json_response(): response.content_type = 'application/json' return json.dumps({"status": "success", "message": "This is JSON data"}) if __name__ == '__main__': run(host='localhost', port=8080)
Conclusion
Bottle is a powerful yet lightweight framework that allows you to create small, fast, and reliable web applications with minimal effort. Its simplicity and versatility make it a great option for beginners and professionals looking to develop quick prototypes or even production-ready apps.