Web Development

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.

Web Frameworks

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.

CMS

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.

Python in the Browser

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.

E-commerce

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.

RESTful API

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.

Third-party APIs

Libraries for accessing third party services APIs. See: List of Python API Wrappers and Libraries.

Authentication

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

Geolocation

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.

Debugging Tools

Libraries for debugging code.

HTTP

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.

ORM

Libraries that implement Object-Relational Mapping or data mapping techniques.

  • Relational Databases
  • 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.

Template Engine

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.

Permissions

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.

Queue

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.

News Feed

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.

Asset Management

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.

Caching

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.

Email

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.

Internationalization

Libraries for working with i18n.

  • Babel - An internationalization library for Python.
  • Korean - A library for Korean morphology.

URL Manipulation

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.

HTML Manipulation

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.

Web Crawling

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

Web Content Extracting

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.

Forms

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.

Data Validation

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.

Anti-spam

Libraries for fighting spam.

Tagging

Libraries for tagging items.

Admin Panels

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

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.

WebSocket

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.

Tutorials

Books/Resources

Online courses/Videos

Contributors

The following people helped in creating the above content.