Python powers biggest sites on the internet like YouTube, Pinterest, Quora, Instagram, Reddit, Disqus etc. The frameworks like Django, Flask offer rich features and keeps you focused on your problem not common stuff. The Web applications built with Python are scalable and secure. So what are you waiting for?
The following list covers almost every aspect of Web Development in Python.
Full stack web frameworks makes developer's life easier when building secure, scalable and maintanable web applications.
- Django - The most popular web framework in Python.
- Flask - A microframework for Python.
- Pyramid - A small, fast, down-to-earth, open source Python web framework.
- Tornado - A Web framework and asynchronous networking library.
- Bluebream - An open-source web application server, framework and library, formerly known as Zope 3.
- Bottle - A fast, simple and lightweight WSGI micro web-framework.
- CherryPy - A Minimalist Python Web Framework, HTTP/1.1-compliant and WSGI thread-pooled.
- Grok - A framework built on the existing Zope 3 libraries.
- guava - A lightweight and high performance web framework for Python written in C.
- TurboGears - The Web Framework that starts as a microframework and scales up to a full stack solution.
- web.py - A web framework for Python that is as simple as it is powerful.
- web2py - A full stack web framework and platform focused in the ease of use.
- webapp2 - A lightweight Python web framework compatible with Google App Engine’s webapp.
- Ferris - A Lightweight, customizable framework written in Python to harness the power of App Engine and accelerate application development.
- CubicWeb -A semantic web application framework featuring a query language, a selection+view mechanism, multiple databases, security, workflows, reusable components, etc.
- WebBot - A QT inspired web framework that includes a graphical interface builder, AJAX abstraction, and integration support for Google's AppEngine.
- Lino - a framework for creating customized enterprise-level Rich Internet Applications using Sencha ExtJS and Django.
Content Management Systems.
- django-cms - An Open source enterprise CMS based on the Django.
- djedi-cms - A lightweight but yet powerful Django CMS with plugins, inline editing and performance in mind.
- FeinCMS - One of the most advanced Content Management Systems built on Django.
- Kotte - A high-level, Pythonic web application framework built on Pyramid.
- Mezzanine - A powerful, consistent, and flexible content management platform.
- Opps - A Django-based CMS for magazines, newspapers websites and portals with high-traffic.
- Plone - A CMS built on top of the open source application server Zope.
- Quokka - Flexible, extensible, small CMS powered by Flask and MongoDB.
- Wagtail - A Django content management system.
- Widgy - Last CMS framework, based on Django.
Tools that enable running Python client-side: Why should the server have all the good languages...
- Transcrypt - Python 3.6 to JavaScript compiler, code size and speed comparable to JavaScript, source level debugging, optional static typechecking, linting and minification, direct use of any JavaScript library.
Frameworks and libraries for e-commerce and payments.
- django-oscar - An open-source e-commerce framework for Django.
- django-shop - A Django based shop system.
- shoop - An open source E-Commerce platform based on Django.
- alipay - Unofficial Alipay API for Python.
- merchant - A Django app to accept payments from various payment processors.
- money - Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.
- python-currencies - Display money format and its filthy currencies.
Libraries for developing RESTful APIs.
- django-rest-framework - A powerful and flexible toolkit that makes it easy to build Web APIs.
- django-tastypie - Creating delicious APIs for Django apps.
- django-formapi - Create JSON APIs with HMAC authentication and Django form-validation.
- flask-api - Browsable Web APIs for Flask.
- flask-restful - An extension for Flask that adds support for quickly building REST APIs.
- flask-restless - Generating RESTful APIs for database models defined with SQLAlchemy.
- flask-api-utils - Flask extension that takes care of API representation and authentication.
- falcon - A high-performance Python framework for building cloud APIs and web app backends.
- hug - APIs for the future. Enables creating APIs with automatically generated documentation and versioning support with minimal lines of code. Built on-top of Falcon and Python3.
- eve - REST API framework powered by Flask, MongoDB and good intentions.
- sandman - Automated REST APIs for existing database-driven systems.
- restless - Framework agnostic REST framework based on lessons learned from TastyPie.
- savory-pie - REST API building library (Django, and others)
- ripozo - Quickly creating REST/HATEOAS/Hypermedia APIs with extensions for Flask and Django.
- cornice - A REST framework for Pyramid.
Libraries for accessing third party services APIs. See: List of Python API Wrappers and Libraries.
- apache-libcloud - One Python library for all clouds.
- boto - Python interface to Amazon Web Services.
- django-wordpress - WordPress models and views for Django.
- facebook-sdk - Facebook Platform Python SDK.
- facepy - Facepy makes it really easy to interact with Facebook's Graph API
- gmail - A Pythonic interface for Gmail.
- google-api-python-client - Google APIs Client Library for Python.
- gspread - Google Spreadsheets Python API.
- twython - A Python wrapper for the Twitter API.
Libraries for implementing authentications schemes.
- OAuth
- Authomatic - Simple but powerful framework agnostic authentication/authorization client.
- django-allauth - Authentication app for Django that "just works."
- django-oauth-toolkit - OAuth2 goodies for the Djangonauts.
- django-oauth2-provider - Providing OAuth2 access to Django app.
- Flask-OAuthlib - OAuth 1.0/a, 2.0 implementation of client and provider for Flask.
- OAuthLib - A generic and thorough implementation of the OAuth request-signing logic.
- python-oauth2 - A fully tested, abstract interface to creating OAuth clients and servers.
- python-social-auth - An easy-to-setup social authentication mechanism.
- rauth - A Python library for OAuth 1.0/a, 2.0, and Ofly.
- sanction - A dead simple OAuth2 client implementation.
- Others
- jose - JavaScript Object Signing and Encryption draft implementation.
- PyJWT - Implementation of the JSON Web Token draft 01.
- python-jws - Implementation of JSON Web Signatures draft 02.
- python-jwt - Module for generating and verifying JSON Web Tokens.
- django-rest-framework-jwt - JSON Web Token Authentication support for Django REST Framework
Libraries for geocoding addresses and working with latitudes and longitudes.
- GeoDjango - A world-class geographic web framework.
- django-countries - A Django app that provides country choices for use with forms, flag icons static files, and a country field for models.
- GeoIP - Python API for MaxMind GeoIP Legacy Database.
- geojson - Python bindings and utilities for GeoJSON.
- geopy - Python Geocoding Toolbox.
- pygeoip - Pure Python GeoIP API.
Libraries for debugging code.
- django-debug-toolbar - Display various debug information about the current request/response.
- django-devserver - A drop-in replacement for Django's runserver.
- flask-debugtoolbar - A port of the django-debug-toolbar to flask.
Libraries for working with HTTP.
- requests - HTTP Requests for Humans™.
- grequests - requests + gevent for asynchronous HTTP requests.
- httplib2 - Comprehensive HTTP client library.
- treq - Python requests like API built on top of Twisted's HTTP client.
- urllib3 - A HTTP library with thread-safe connection pooling, file post support, sanity friendly.
Libraries that implement Object-Relational Mapping or data mapping techniques.
- Relational Databases
- Django Models - A part of Django.
- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper.
- peewee - A small, expressive ORM.
- PonyORM - ORM that provides a generator-oriented interface to SQL.
- NoSQL Databases
- django-mongodb-engine - Django MongoDB Backend.
- flywheel - Object mapper for Amazon DynamoDB.
- MongoEngine - A Python Object-Document-Mapper for working with MongoDB.
- redisco - A Python Library for Simple Models and Containers Persisted in Redis.
- Others
- butterdb - A Python ORM for Google Drive Spreadsheets.
Libraries and tools for templating and lexing.
- Jinja2 - A modern and designer friendly templating language.
- Chameleon - An HTML/XML template engine. Modeled after ZPT, optimized for speed.
- Genshi - Python templating toolkit for generation of web-aware output.
- Mako - Hyperfast and lightweight templating for the Python platform.
- Spitfire - A very fast Python template compiler.
Libraries that allow or deny users access to data or functionality.
- Carteblanche - Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.
- django-guardian - Implementation of per object permissions for Django 1.2+
- django-rules - A tiny but powerful app providing object-level permissions to Django, without requiring a database.
Libraries for working with event and task queues.
- celery - An asynchronous task queue/job queue based on distributed message passing.
- huey - Little multi-threaded task queue.
- mrq - Mr. Queue - A distributed worker task queue in Python using Redis & gevent.
- rq - Simple job queues for Python.
- simpleq - A simple, infinitely scalable, Amazon SQS based queue.
Libraries and software for indexing and performing search queries on data.
- django-haystack - Modular search for Django.
- elasticsearch-py - The official low-level Python client for Elasticsearch.
- elasticsearch-dsl-py - The official high-level Python client for Elasticsearch.
- solrpy - A Python client for solr.
- Whoosh - A fast, pure Python search engine library.
Libraries for building user's activities.
- django-activity-stream - Generate generic activity streams from the actions on your site.
- Feedly - A library to build newsfeed and notification systems using Cassandra and Redis.
Tools for managing, compressing and minifying website assets.
- django-compressor - Compresses linked and inline JavaScript or CSS into a single cached file.
- django-storages - A collection of custom storage back ends for Django.
- fanstatic - Packages, optimizes, and serves static file dependencies as Python packages.
- File Conveyor - A daemon to detect and sync files to CDNs, S3 and FTP.
- Flask-Assets - Helps you integrate webassets into your Flask app.
- glue - Glue is a simple command line tool to generate CSS sprites.
- jinja-assets-compressor - A Jinja extension to compile and compress your assets.
- webassets - Bundles, optimizes, and manages unique cache-busting URLs for static resources.
Libraries for caching data.
- Beaker - A library for caching and sessions for use with web applications and stand-alone Python scripts and applications.
- django-cache-machine - Automatic caching and invalidation for Django models.
- django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
- django-viewlet - Render template parts with extended cache control.
- dogpile.cache - dogpile.cache is next generation replacement for Beaker made by same authors.
- HermesCache - Python caching library with tag-based invalidation and dogpile effect prevention.
- johnny-cache - A caching framework for django applications.
- pylibmc - A Python wrapper around the libmemcached interface.
Libraries for sending and parsing email.
- django-celery-ses - Django email back end with AWS SES and Celery.
- envelopes - Mailing for human beings.
- flanker - A email address and Mime parsing library.
- imbox - Python IMAP for Humans.
- inbox.py - Python SMTP Server for Humans.
- inbox - The open source email toolkit.
- lamson - Pythonic SMTP Application Server.
- mailjet - Mailjet API implementation for batch mailing, statistics and more.
- marrow.mailer - High-performance extensible mail delivery framework.
- modoboa - A mail hosting and management platform including a modern and simplified Web UI.
- pyzmail - Compose, send and parse emails.
- Talon - Mailgun library to extract message quotations and signatures.
Libraries for working with i18n.
Libraries for parsing URLs.
- furl - A small Python library that makes manipulating URLs simple.
- purl - A simple, immutable URL class with a clean API for interrogation and manipulation.
- pyshorteners - A pure Python URL shortening lib.
- short_url - Python implementation for generating Tiny URL and bit.ly-like URLs.
- webargs - A friendly library for parsing HTTP request arguments, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, and Pyramid.
Libraries for working with HTML and XML.
- BeautifulSoup - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML.
- bleach - A whitelist-based HTML sanitization and text linkification library.
- cssutils - A CSS library for Python.
- html5lib - A standards-compliant library for parsing and serializing HTML documents and fragments.
- lxml - A very fast, easy-to-use and versatile library for handling HTML and XML.
- MarkupSafe - Implements a XML/HTML/XHTML Markup safe string for Python.
- pyquery - A jQuery-like library for parsing HTML.
- untangle - Converts XML documents to Python objects for easy access.
- xhtml2pdf - HTML/CSS to PDF converter.
- xmltodict - Working with XML feel like you are working with JSON.
Libraries for scraping websites.
- Scrapy - A fast high-level screen scraping and web crawling framework.
- cola - A distributed crawling framework.
- Demiurge - PyQuery-based scraping micro-framework.
- feedparser - Universal feed parser.
- Grab - Site scraping framework.
- MechanicalSoup - A Python library for automating interaction with websites.
- portia - Visual scraping for Scrapy.
- pyspider - A powerful spider system.
- RoboBrowser - A simple, Pythonic library for browsing the web without a standalone web browser.
- Weboob - A framework for scraping sites with already existing site modules and ready-made client apps
Libraries for extracting web contents.
- Haul - An Extensible Image Crawler.
- html2text - Convert HTML to Markdown-formatted text.
- lassie - Web Content Retrieval for Humans.
- micawber - A small library for extracting rich content from URLs.
- newspaper - News extraction, article extraction and content curation in Python.
- opengraph - A Python module to parse the Open Graph Protocol
- python-goose - HTML Content/Article Extractor.
- python-readability - Fast Python port of arc90's readability tool.
- sanitize - Bringing sanity to world of messed-up data.
- sumy - A module for automatic summarization of text documents and HTML pages.
- textract - Extract text from any document, Word, PowerPoint, PDFs, etc.
Libraries for working with forms.
- Deform - Python HTML form generation library influenced by the formish form generation library.
- django-bootstrap3 - Bootstrap 3 integration with Django.
- django-crispy-forms - A Django app which lets you create beautiful forms in a very elegant and DRY way.
- django-remote-forms - A platform independent Django form serializer.
- WTForms-JSON - A WTForms extension for JSON data handling.
- WTForms - A flexible forms validation and rendering library.
Libraries for validating data. Used for forms in many cases.
- Cerberus - A mappings-validator with a variety of rules, normalization-features and simple customization that uses a pythonic schema-definition.
- colander - A system for validating and deserializing data obtained via XML, JSON, an HTML form post or any other equally simple data serialization.
- kmatch - A language for matching/validating/filtering Python dictionaries.
- schema - A library for validating Python data structures.
- Schematics - Data Structure Validation.
- valideer - Lightweight extensible data validation and adaptation library.
- voluptuous - A Python data validation library. It is primarily intended for validating data coming into Python as JSON, YAML, etc.
Libraries for fighting spam.
- django-simple-captcha - A simple and highly customizable Django app to add captcha images to any Django form.
- django-simple-spam-blocker - Simple spam blocker for Django.
Libraries for tagging items.
- django-taggit - Simple tagging for Django.
Libraries for administrative interfaces.
- Ajenti - The admin panel your servers deserve.
- django-suit - Alternative Django Admin-Interface (free only for Non-commercial use).
- django-xadmin - Drop-in replacement of Django admin comes with lots of goodies.
- flask-admin - Simple and extensible administrative interface framework for Flask.
- flower - Real-time monitor and web admin for Celery.
- Grappelli – A jazzy skin for the Django Admin-Interface.
Static site generator is a software that takes some text + templates as input and produces HTML files on the output.
- Pelican - Uses Markdown or ReST for content and Jinja 2 for themes. Supports DVCS, Disqus. AGPL.
- Cactus – Static site generator for designers.
- Hyde - Jinja2-based static web site generator.
- Nikola - A static website and blog generator.
- Tinkerer - Tinkerer is a blogging engine/.static website generator powered by Sphinx.
Libraries for working with WebSocket.
- AutobahnPython - WebSocket & WAMP for Python on Twisted and asyncio.
- Crossbar - Open-source Unified Application Router (Websocket & WAMP for Python on Autobahn).
- WebSocket-for-Python - WebSocket client and server library for Python 2 and 3 as well as PyPy.
- Official Django Tutorial
- Official Flask tutorial
- Official Bottle tutorial
- Django Girls tutorial
- Flask tutorial - Miguel Grinberg
- Full Stack Python
- TaskBuster Django Tutorial
- Two Scoops of Django: Best Practices for Django 1.8
- Test-Driven Development with Python
- Lightweight Django
- High Performance Django
- Tango with Django
- Mastering Django
- Explore Flask
- Coding for Entrepreneurs
- Go Django
- Getting Started with Django
- Getting Started with Django - Pycon
- Flask Workshop - Miguel Grinberg
- Full Stack Foundations
- Learn Flask-Tutorialspoint
The following people helped in creating the above content.
- Contributors to awesome-python
- Timothy Edmund Crosley
- Eric Hideki
- Sandip Bhagat
- Mohit Bajoria