DEV Community

Cover image for The Best GitHub Repositories For Django Developers.
Mahmoud Harmouch
Mahmoud Harmouch

Posted on

The Best GitHub Repositories For Django Developers.

In this post, I have compiled a list of the most useful Django repositories on GitHub. The list is sorted by star count.

Table Of Content (TOC).

👉 Admin Panels.

xadmin ⭐ 4.7k+ 🍴 1.4k+

GitHub logo sshwsfc / xadmin

Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Xadmin Build Status

Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Live Demo

http://demo.xadmin.io

  • User: admin
  • Password: admin

Features

  • Drop-in replacement of Django admin
  • Twitter Bootstrap based UI with theme support
  • Extensible with plugin support
  • Better filter, date range, number range, etc.
  • Built-in data export with xls, csv, xml and json format
  • Dashboard page with widget support
  • In-site bookmarking
  • Full CRUD methods

Screenshots

Actions
Filter
Chart
Export Data
Edit inline

Get Started

Install

Xadmin is best installed via PyPI. To install the latest version, run:

pip install xadmin
Enter fullscreen mode Exit fullscreen mode

or Install from github source:

pip install git+git://github.com/sshwsfc/xadmin.git
Enter fullscreen mode Exit fullscreen mode

Install from github source for Django 2.0:

pip install git+git://github.com/sshwsfc/xadmin.git@django2
Enter fullscreen mode Exit fullscreen mode

Install Requires

django-jet ⭐ 3.3k+ 🍴 700+

GitHub logo geex-arts / django-jet

Modern responsive template for the Django admin interface with improved functionality. We are proud to announce completely new Jet. Please check out Live Demo

Django JET

https://travis-ci.org/geex-arts/django-jet.svg?branch=master

Modern template for Django admin interface with improved functionality

Attention! NEW JET

We are proud to announce completely new Jet. Please check out Live Demo.

Developing of new features for Django Jet will be frozen, only critical bugs will be fixed.

Live Demo

Django JET has two kinds of licenses: open-source (AGPLv3) and commercial. Please note that using AGPLv3 code in your programs make them AGPL compatible too. So if you don't want to comply with that we can provide you a commercial license (visit Home page). The commercial license is designed for using Django JET in commercial products and applications without the provisions of the AGPLv3.

Logo

Why Django JET?

  • New fresh look
  • Responsive mobile interface
  • Useful admin home page
  • Minimal template overriding
  • Easy integration
  • Themes support
  • Autocompletion
  • Handy…

django-suit ⭐ 2.2k+ 🍴 600+

GitHub logo darklow / django-suit

Modern theme for Django admin interface

Django Suit

Modern theme for Django admin interface.

Django Suit is alternative theme/skin/extension for Django administration interface.

License

Docs & Support

Changelog

Note: Django Suit v2.0 is in active development and not yet ready for production use.

Read more here: Todo: Add issue refernce

Contributing

See Contributing documentation

Build Status

Django Suit uses Travis CI to perform tests on different Django and Python versions.

Tested using Python: 2.7-3.4 and PyPy. Django: 1.9+ and Django Suit v2.0 alpha:

Build Status - v2 branch Build Status - develop branch

Preview

https://cloud.githubusercontent.com/assets/445304/12699480/3eee898e-c7c5-11e5-931c-ba1b0cabdecb.png

alt: Django Suit Preview :target: http://v2.djangosuit.com/admin/



wooey ⭐ 1.8k+ 🍴 100+

GitHub logo wooey / Wooey

A Django app that creates automatic web UIs for Python scripts.

Wooey!

Build Status Deploy-To-Pypi Deploy-To-Docker codecov Join the chat at https://gitter.im/wooey/Wooey

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data analysis, file processing, or anything else.

Wooey was envisioned as a system to allow data analysts to be able to easily:

1. Autodocument workflows for data analysis
    (simple model saving).
2. Enable fellow co-workers with no command line
    experience to utilize python scripts.
3. Enable the easy wrapping of any program in simple
   python instead of having to use language specific
   to existing tools such as Galaxy.

For installation and other instructions, check out our documentation or give Wooey a test drive at our demo-server!




django-controlcenter ⭐ 900+ 🍴 10+

GitHub logo byashimov / django-controlcenter

Set of widgets to build dashboards for Django projects

Welcome to django-controlcenter!

Get all your project models on one single page with charts and whistles.

django-controlcenter

Attention!

Unfortunately, I have no time to add new features. Please make PR if you need one:

  • branch from master
  • provide tests
  • add docs
  • update changelog

That's it.

Rationale

Django-admin is a great tool to control your project activity: new orders, comments, replies, users, feedback -- everything is here. The only struggle is to switch between all those pages constantly just to check them out for new entries.

With django-controlcenter you can have all of your models on one single page and build beautiful charts with Chartist.js. Actually they don't even have to be a django models, get your data from wherever you want: RDBMS, NOSQL, text file or even from an external web-page, it doesn't matter.

Quickstart

Install django-controlcenter:

pip install -U django-controlcenter
Enter fullscreen mode Exit fullscreen mode

Create a dashboard file with unlimited number of widgets…

django-admin-tools ⭐ 700+ 🍴 100+

GitHub logo django-admin-tools / django-admin-tools

Extends the Django Admin to include a extensible dashboard and navigation menu

django-admin-tools

Travis build codecov-image Documentation Status Pypi version Python versions

Overview

django-admin-tools is a collection of extensions/tools for the default django administration interface, it includes:

  • a full featured and customizable dashboard;
  • a customizable menu bar;
  • tools to make admin theming easier.

The code is hosted on Github.

Django-admin-tools is generously documented, you can browse the documentation online. a good start is to read the quickstart guide.

The project was created by David Jean Louis and was previously hosted on Bitbucket.

Please join the mailing list if you want to discuss of the future of django-admin-tools.

Requirements

django-admin-tools is compatible with Django 1.11 LTS up to Django 4.0 as well Python 2.7, 3.5+.

For older python and django versions please use the 0.8.1 version of django-admin-tools which is available on Pypi.

Installation

To install django-admin-tools, run the following command inside this directory:

python setup.py install

If you have the Python easy_install utility available, you can also…

👉 Authentication.

🔝 Go To TOC

django-allauth ⭐ 7.4k+ 🍴 2.6k

GitHub logo pennersr / django-allauth

Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.

Welcome to django-allauth!

django-allauth logo

ci pypi Coverage Status btc liberapay pystyle jsstyle editor i18n PyPI - Downloads View Django Demo View React SPA Demo

Integrated set of Django applications addressing authentication registration, account management as well as 3rd party (social) account authentication.

Home page
https://allauth.org/
Source code
https://codeberg.org/allauth/django-allauth
Issue Tracker
https://codeberg.org/allauth/django-allauth/issues
Documentation
https://docs.allauth.org/en/latest/
Stack Overflow
https://stackoverflow.com/questions/tagged/django-allauth
Demo
https://django.demo.allauth.org and https://react.demo.allauth.org
Translations
https://hosted.weblate.org/projects/allauth/django-allauth/

Rationale

Most existing Django apps that address the problem of social authentication unfortunately focus only on one dimension - the social. Most developers end up integrating another app in order to support authentication flows that are locally generated.

This approach creates a development gap between local and social authentication flows. It has remained an issue in spite of numerous common scenarios that both require. For example, an email address passed along by an OpenID provider may not be verified. Therefore, prior to hooking up an OpenID account to a local account the email address must be verified. This essentially is one of many use cases that mandate email verification…

django-oauth-toolkit ⭐ 2.6k+ 🍴 700+

GitHub logo jazzband / django-oauth-toolkit

OAuth2 goodies for the Djangonauts!

Django OAuth Toolkit

Jazzband

OAuth2 goodies for the Djangonauts!

GitHub Actions Coverage Supported Python versions Supported Django versions
If you are facing one or more of the following:
  • Your Django app exposes a web API you want to protect with OAuth2 authentication,
  • You need to implement an OAuth2 authorization server to provide tokens management for your infrastructure,

Django OAuth Toolkit can help you providing out of the box all the endpoints, data and logic needed to add OAuth2 capabilities to your Django projects. Django OAuth Toolkit makes extensive use of the excellent OAuthLib, so that everything is rfc-compliant.

Reporting security issues

Please report any security issues to the JazzBand security team at <security@jazzband.co>. Do not file an issue on the tracker.

Requirements

  • Python 3.8+
  • Django 4.2, 5.0 or 5.1
  • oauthlib 3.2.2+

Installation

Install with pip:

pip install django-oauth-toolkit

Add oauth2_provider to your INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'oauth2_provider',
)
Enter fullscreen mode Exit fullscreen mode

If you need an OAuth2…

django-rest-auth ⭐ 2.3k+ 🍴 600+

GitHub logo Tivix / django-rest-auth

This app makes it extremely easy to build Django powered SPA's (Single Page App) or Mobile apps exposing all registration and authentication related functionality as CBV's (Class Base View) and REST (JSON)




djoser ⭐ 2.2k+ 🍴 400+

GitHub logo sunscrapers / djoser

REST implementation of Django authentication system.

djoser

Build Status https://img.shields.io/pypi/dm/djoser Docs

REST implementation of Django authentication system. djoser library provides a set of Django Rest Framework views to handle basic actions such as registration, login, logout, password reset and account activation. It works with custom user model.

Instead of reusing Django code (e.g. PasswordResetForm), we reimplemented few things to fit better into Single Page App architecture.

Developed by SUNSCRAPERS with passion & patience.

https://asciinema.org/a/94J4eG2tSBD2iEfF30a6vGtXw.png

Requirements

To be able to run djoser you have to meet the following requirements:

  • Python>=3.8
  • Django>=3.0.0
  • Django REST Framework>=3.12

Installation

Simply install using pip:

$ pip install djoser
Enter fullscreen mode Exit fullscreen mode

And continue with the steps described at configuration guide.

Documentation

Documentation is available to study at https://djoser.readthedocs.io and in docs directory.

Contributing and development

To start developing on djoser, clone the repository:

$ git clone git@github.com:sunscrapers/djoser.git
Enter fullscreen mode Exit fullscreen mode

We use poetry as dependency management and packaging tool.

$ cd djoser
$ poetry install --all-extras
Enter fullscreen mode Exit fullscreen mode

This will create…

authentik ⭐ 2.2k+ 🍴 100+

GitHub logo goauthentik / authentik

The authentication glue you need.

authentik logo


Join Discord GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status Code Coverage Docker pulls Latest version

What is authentik?

authentik is an open-source Identity Provider that emphasizes flexibility and versatility, with support for a wide set of protocols.

Our enterprise offer can also be used as a self-hosted replacement for large-scale deployments of Okta/Auth0, Entra ID, Ping Identity, or other legacy IdPs for employees and B2B2C use.

Installation

For small/test setups it is recommended to use Docker Compose; refer to the documentation.

For bigger setups, there is a Helm Chart here. This is documented here.

Screenshots

Light Dark

Development

See Developer Documentation

Security

See SECURITY.md

Adoption and Contributions

Your organization uses authentik? We'd love to add your logo to the readme and our website! Email us @ hello@goauthentik.io or open a GitHub Issue/PR! For more information on how to contribute to authentik, please refer to our CONTRIBUTING.md file.




django-two-factor-auth ⭐ 1.3k+ 🍴 300+

GitHub logo jazzband / django-two-factor-auth

Complete Two-Factor Authentication for Django providing the easiest integration into most Django projects.

Django Two-Factor Authentication

Jazzband Build Status Test Coverage PyPI

Complete Two-Factor Authentication for Django. Built on top of the one-time password framework django-otp and Django's built-in authentication framework django.contrib.auth for providing the easiest integration into most Django projects. Inspired by the user experience of Google's Two-Step Authentication allowing users to authenticate through call, text messages (SMS), by using a token generator app like Google Authenticator or a YubiKey hardware token generator (optional).

If you run into problems, please file an issue on GitHub, or contribute to the project by forking the repository and sending some pull requests. The package is translated into English, Dutch and other languages. Please contribute your own language using Transifex.

Test drive this app through the example app. It demos most features except the Twilio integration. The example also includes django-user-sessions for providing Django sessions with a foreign key to the user. Although the package is optional, it improves account…

dj-rest-auth ⭐ 1k+ 🍴 100+

GitHub logo iMerica / dj-rest-auth

Authentication for Django Rest Framework

Dj-Rest-Auth

<iMerica>

Drop-in API endpoints for handling authentication securely in Django Rest Framework. Works especially well with SPAs (e.g., React, Vue, Angular), and Mobile applications.

Requirements

  • Django 3, 4 and 5 (See Unit Test Coverage in CI)
  • Python >= 3.8

Quick Setup

Install package

pip install dj-rest-auth

Add dj_rest_auth app to INSTALLED_APPS in your django settings.py:

INSTALLED_APPS = (
    ...,
    'rest_framework',
    'rest_framework.authtoken',
    ...,
    'dj_rest_auth'
)
Enter fullscreen mode Exit fullscreen mode

Add URL patterns

urlpatterns = [
    path('dj-rest-auth/', include('dj_rest_auth.urls')),
]
Enter fullscreen mode Exit fullscreen mode

(Optional) Use Http-Only cookies

REST_AUTH = {
    'USE_JWT': True,
    'JWT_AUTH_COOKIE': 'jwt-auth',
}
Enter fullscreen mode Exit fullscreen mode

Testing

Install required modules with pip install -r dj_rest_auth/tests/requirements.pip

To run the tests within a virtualenv, run python runtests.py from the repository directory The easiest way to run test coverage is with coverage, which runs the tests against all supported Django installs. To run the test coverage within a virtualenv, run coverage

authomatic ⭐ 900+ 🍴 300+

GitHub logo authomatic / authomatic

Simple yet powerful authorization / authentication client library for Python web applications.

Authomatic

https://travis-ci.org/authomatic/authomatic.svg?branch=master

Authomatic is a framework agnostic library for Python web applications with a minimalistic but powerful interface which simplifies authentication of users by third party providers like Facebook or Twitter through standards like OAuth and OpenID.

For more info visit the project page at http://authomatic.github.io/authomatic.

Maintainers

Authomatic was migrated from a private project of Peter Hudec to a community-managed project. Many thanks to Peter Hudec for all his hard work for creating and maintaining authomatic! We are now a small team of volunteers, not paid for the work here. Any help is appreciated!

Features

  • Loosely coupled.
  • Tiny but powerful interface.
  • The python-openid library is the only optional dependency.
  • Framework agnostic thanks to adapters Out of the box support for Django, Flask, Pyramid and Webapp2.
  • Ready to accommodate future authorization/authentication protocols.
  • Makes provider API calls a breeze.
  • Asynchronous requests.
  • JavaScript library as a bonus.
  • Out…

👉 CMS.

🔝 Go To TOC

wagtail ⭐ 12.7k+ 🍴 2.7k+

GitHub logo wagtail / wagtail

A Django content management system focused on flexibility and user experience

Wagtail


Build Status License Version Monthly downloads follow on X

Wagtail is an open source content management system built on Django, with a strong community and commercial support. It's focused on user experience, and offers precise control for designers and developers.

Wagtail screenshot

🔥 Features

  • A fast, attractive interface for authors
  • Complete control over front-end design and structure
  • Scales to millions of pages and thousands of editors
  • Fast out of the box, cache-friendly when you need it
  • Content API for 'headless' sites with decoupled front-end
  • Runs on a Raspberry Pi or a multi-datacenter cloud platform
  • StreamField encourages flexible content without compromising structure
  • Powerful, integrated search, using Elasticsearch or PostgreSQL
  • Excellent support for images and embedded content
  • Multi-site and multi-language ready
  • Embraces and extends Django

Find out more at wagtail.org.

👉 Getting started

Wagtail works with Python 3, on any platform.

To get started with using Wagtail, run the following in a virtual environment:

Installing Wagtail

pip install wagtail
wagtail start mysite
Enter fullscreen mode Exit fullscreen mode

django-cms ⭐ 8.9k+ 🍴 2.8k+

GitHub logo django-cms / django-cms

The easy-to-use and developer-friendly enterprise CMS powered by Django

django CMS

Code Climate

Open source enterprise content management system based on the Django framework and backed by the non-profit django CMS Association (Sponsor us!).

Contribute to this project and win rewards

Because django CMS is a community-driven project, we welcome everyone to get involved in the project. Become part of a fantastic community and help us make django CMS the best open source CMS in the world.

Attention!

Please use the develop-4 branch as the target for pull requests for on-going development.

Security fixes will be backported to older branches by the core team as appropriate.

Features

  • hierarchical pages
  • extensive built-in support for multilingual websites
  • multi-site support
  • draft/publish workflows
  • version control
  • a sophisticated publishing architecture, that's also usable in your own applications
  • frontend content editing
  • a hierarchical content structure for nested plugins
  • an extensible navigation system that your own applications can hook into
  • SEO-friendly URLs
  • designed to integrate…

django-filer ⭐ 1.6k+ 🍴 500+

GitHub logo django-cms / django-filer

File and Image Management Application for django

Django Filer

pypi python django coverage

django Filer is a file management application for django that makes handling of files and images a breeze.

Note

This project is endorsed by the django CMS Association That means that it is officially accepted by the dCA as being in line with our roadmap vision and development/plugin policy Join us on Slack.

https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/filer_2.png https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/filer_3.png
https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/detail_image.png https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/detail_file.png
https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/file_picker_1.png https://raw.githubusercontent.com/django-cms/django-filer/master/docs/_static/file_picker_3.png

Contribute to this project and win rewards

Because this is a an open-source project, we welcome everyone to get involved in the project and receive a reward for their contribution. Become part of a fantastic community and help us make django CMS the best CMS in the world.

We'll be delighted to receive your feedback in the form of issues and pull requests. Before submitting your pull request, please review our contribution guidelines.

We're grateful to all contributors who have helped create and maintain this package Contributors are listed at the contributors

cms ⭐ 400+ 🍴 10+

GitHub logo amfoss / cms

This project is outdated and replaced by root. Archived for historical reference. Club Management System of amFOSS, powered by CMS

amfoss-cms-cover

CMS

Watchers Star Gazers Forks

Travis CI Version 0.5 GNU Total alerts Join the chat at https://gitter.im/amfoss/cms Open Issues PRs Contributors

Club Management System (CMS) is django-based web-app which lays framework for the amfoss website, the amfoss webapp, and the amfoss app.

The portal is primarily a django based application, and to set it up we require to have python environment with django and other project dependencies installed. Though one can work with the project without an virtual environment, it is recommended to use one so as to avoid conflicts with other projects.

  1. Make sure that you have Python 3, python-3-devel, gcc, virtualenv, and pip installed.

  2. Clone the repository

        $ git clone https://github.com/amfoss/cms.git
        $ cd cms
    
  3. Create a python 3 virtualenv, and activate the environment.

        $ virtualenv -p python3 .
        $ source bin/activate
    Enter fullscreen mode Exit fullscreen mode
  4. Install the project dependencies from requirements.txt

        $ pip install -r requirements.txt
    

You have now successfully set up the project on your environment. If you encounter any problems during installation, you…

django-page-cms ⭐ 200+ 🍴 100+

GitHub logo batiste / django-page-cms

Official Django page CMS git repository

django-page-cms

https://readthedocs.org/projects/django-page-cms/badge/?version=latest Code Climate Scrutinizer Code Quality

This Django CMS enables you to create and administrate hierarchical pages in a simple and powerful way.

For a quick demo.

$ pip3 install "django-page-cms[full]"; gerbi --create mywebsite
Enter fullscreen mode Exit fullscreen mode

Or with docker

docker compose up fast
# or if you want to build it yourself
docker compose up web
Enter fullscreen mode Exit fullscreen mode

To create a super user account

docker compose run fast python example/manage.py createsuperuser
Enter fullscreen mode Exit fullscreen mode

To create a demo website

docker compose run fast python example/manage.py pages_demo
Enter fullscreen mode Exit fullscreen mode

To run tests with docker

docker compose run run-test
Enter fullscreen mode Exit fullscreen mode

More informations

Django page CMS is based around a placeholders concept. Placeholder is a special template tag that you use in your page templates. Every time you add a placeholder in your template such field dynamically appears in the page admin interface.

Each page can have a different template with different placeholders.

https://github.com/batiste/django-page-cms/raw/master/doc/images/admin-screenshot-1.png

Those placeholder can also be edited…

jbt_blog ⭐ 100+ 🍴 10+

GitHub logo leeyis / jbt_blog

一个基于Django2.0+Python3.6的博客/A simple blog based on python3.6 and Django2.0.

Introduction

一个基于python3.6Django2.0的博客。

A simple blog based on python3.6 and Django2.0.

requirement

  • Django==2.0.3
  • django-jet==1.0.7
  • django-summernote==0.8.8.6
  • pytz==2018.3

Front page

1


2


Backend page

1


2


3

Quick start

#创建虚拟环境
conda create -n blog python=3.6 -y
#激活虚拟环境
conda activate blog
#安装依赖包
pip install -r requirements.txt
#启动服务器
python manage.py runserver
Enter fullscreen mode Exit fullscreen mode

浏览器访问http://127.0.0.1:8000即可访问主页。
后台页面登录地址为http://127.0.0.1:8000/admin
默认用户名为jinbitou,默认密码为123456
注:如果忘记密码或者密码错误,可以执行python manage.py changepassword jinbitou修改。

Features

CN

  • 文章管理,包括新增、删除和编辑
  • 分类管理,包括新增、删除和编辑
  • 标签管理,包括新增、删除和编辑
  • 列表页展示概要信息、发布时间、分类、浏览次数
  • 分页展示
  • 点击"阅读全文"显示文章详细内容
  • 详情页每刷新一次浏览次数+1
  • 文章分类搜索
  • 文章标签搜索
  • 文章详细页切换上一篇和下一篇文章
  • 点击图标回到顶部
  • 文章按月归档

EN

  • Article management, including adding, deleting and editing
  • Classified management, including adding, deleting and editing
  • Tag management, including adding, deleting and editing
  • List page shows summary information, time of release, category, number of visits
  • Pagination display
  • Click "read the full text" to display the details of the article
  • Pages plus one per view
  • Search by category
  • Search by tag
  • switch between previous and next articles
  • One-click back to the top
  • Monthly…

django-leonardo ⭐ 90+ 🍴 10+

GitHub logo django-leonardo / django-leonardo

CMS for everyone, easy to deploy and scale, robust modular system with many packages. https://packages.leonardo-cms.org/

PypiVersion Doc badge Travis Pypi

Django-Leonardo

Full featured platform for fast and easy building extensible web applications.

Don't waste your time searching stable solution for daily problems.

Deploy and Enjoy ! No skills required !

For Users

  • CMS, Page, Responsive, Layouts, Themes, Color Variations
  • Widgets, Plugins, 3rd party app integrations
  • Frontend Edit, Install/Uninstall modules in one click !
  • Store, Form Designer, Blog, News, Folio, Links, Navigations, ..
  • Media, Folders, Files, Images, Documents, Import - Export, ..
  • LIVE settings, Auto loading modules, editable templates, ..
  • Authentification, 3rd party backends, SAML standard, ..

For Developers

  • Python, Django, FeinCMS, OpenStack Horizon
  • AngularJS, React, Bootstrap, Compress, Bootswatch
  • Crispy forms, Floppy forms, Select2
  • Filer, DbTemplates, Reversion, Constance
  • Haystack, Oscar, Django Admin Bootstrap
  • and tons of other apps bundled as modules

Further reading:

👉 Debugging Tools.

🔝 Go To TOC

django-debug-toolbar ⭐ 7.2k+ 🍴 900+

GitHub logo jazzband / django-debug-toolbar

A configurable set of panels that display various debug information about the current request/response.

Django Debug Toolbar Latest version on PyPI

Jazzband Build Status Test coverage status Documentation status Supported Python versions Supported Django versions

The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/response and when clicked, display more details about the panel's content.

Here's a screenshot of the toolbar in action:

Django Debug Toolbar screenshot

In addition to the built-in panels, a number of third-party panels are contributed by the community.

The current stable version of the Debug Toolbar is 5.0.0-alpha. It works on Django ≥ 4.2.0.

The Debug Toolbar does not currently support Django's asynchronous views.

Documentation, including installation and configuration instructions, is available at https://django-debug-toolbar.readthedocs.io/.

The Django Debug Toolbar is released under the BSD license, like Django itself. If you like it, please consider contributing!

The Django Debug Toolbar was originally created by Rob Hudson <rob@cogit8.org> in August 2008 and was further developed by many contributors.




django-devserver ⭐ 1.3k+ 🍴 100+

GitHub logo dcramer / django-devserver

A drop-in replacement for Django's runserver.

About

A drop in replacement for Django's built-in runserver command. Features include:

  • An extendable interface for handling things such as real-time logging.
  • Integration with the werkzeug interactive debugger.
  • Threaded (default) and multi-process development servers.
  • Ability to specify a WSGI application as your target environment.

Note

django-devserver works on Django 1.3 and newer

Installation

To install the latest stable version:

pip install git+git://github.com/dcramer/django-devserver#egg=django-devserver

django-devserver has some optional dependancies, which we highly recommend installing.

  • pip install sqlparse -- pretty SQL formatting
  • pip install werkzeug -- interactive debugger
  • pip install guppy -- tracks memory usage (required for MemoryUseModule)
  • pip install line_profiler -- does line-by-line profiling (required for LineProfilerModule)

You will need to include devserver in your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'devserver',
)

If you're using django.contrib.staticfiles or any other apps with management command runserver, make sure to put devserver above any of them (or below for Django<1.7). Otherwise …

django-debug-panel ⭐ 300+ 🍴 10+

GitHub logo recamshak / django-debug-panel

django-debug-toolbar in WebKit DevTools. Works fine with background Ajax requests and non-HTML responses.

Django Debug Panel

Django Debug Toolbar inside WebKit DevTools. Works fine with background AJAX requests and non-HTML responses Great for single-page applications and other AJAX intensive web applications.

Installation

  1. Install and configure Django Debug Toolbar

  2. Install Django Debug Panel:

    pip install django-debug-panel
    Enter fullscreen mode Exit fullscreen mode
  3. Add debug_panel to your INSTALLED_APPS setting:

    INSTALLED_APPS = (
        # ...
        'debug_panel',
    )
    Enter fullscreen mode Exit fullscreen mode
  4. Replace the Django Debug Toolbar middleware with the Django Debug Panel one. Replace:

    MIDDLEWARE_CLASSES = (
        ...
        'debug_toolbar.middleware.DebugToolbarMiddleware',
        ...
    )
    Enter fullscreen mode Exit fullscreen mode

    with:

    MIDDLEWARE_CLASSES = (
        ...
        'debug_panel.middleware.DebugPanelMiddleware',
        ...
    )
    Enter fullscreen mode Exit fullscreen mode
  5. (Optional) Configure your cache All the debug data of a request are stored into the cache backend debug-panel if available. Otherwise, the default backend is used, and finally if no caches are defined it will fallback to a local memory cache. You might want to configure the debug-panel cache in your settings:

    CACHES
    Enter fullscreen mode Exit fullscreen mode

django-debug-toolbar-template-timings ⭐ 200+ 🍴 10+

GitHub logo orf / django-debug-toolbar-template-timings

A django-debug-toolbar panel that displays template rendering times for your Django application

Template-Timings

Template-timings is a panel for Django Debug Toolbar that gives an in-dept breakdown of the time it takes to render your Django templates (including templates included via {% extends %} and {% include %}).

Template-timings supports Django 1.11 and below, Django 2.0 and above do not work at the moment.

Install

Install via pip (pip install django-debug-toolbar-template-timings) then add 'template_timings_panel.panels.TemplateTimings.TemplateTimings' to your DEBUG_TOOLBAR_PANELS setting, and add 'template_timings_panel' to your INSTALLED_APPS:

# http://django-debug-toolbar.readthedocs.org/en/latest/configuration.html#debug-toolbar-panels
DEBUG_TOOLBAR_PANELS = [
    ...
    'template_timings_panel.panels.TemplateTimings.TemplateTimings',
]

INSTALLED_APPS = [
    ...
    'template_timings_panel'
]
Enter fullscreen mode Exit fullscreen mode

Screenshot

http://i.imgur.com/H2D48Uy.png

Frequently asked questions

How much overhead does this add?

In my experience this panel adds about 10% overhead. The panel uses the standard SQLPanel that ships with debug-toolbar to handle the SQL timings, so if you disable that the overhead will decrease and you can still see the render times.

django-debug-toolbar-mongo ⭐ 10+ 🍴 10+

GitHub logo hmarr / django-debug-toolbar-mongo

MongoDB panel for the Django Debug Toolbar

Django Debug Toolbar MongoDB Panel

Info: An extension panel for Rob Hudson's Django Debug Toolbar that adds MongoDB debugging information
Author: Harry Marr (http://github.com/hmarr, http://twitter.com/harrymarr)

Setup

Add the following lines to your settings.py:

INSTALLED_APPS = (
    ...
    'debug_toolbar_mongo',
    ...
)

DEBUG_TOOLBAR_PANELS = (
    ...
    'debug_toolbar_mongo.panel.MongoDebugPanel',
    ...
)

An extra panel titled "MongoDB" should appear in your debug toolbar.

Note that this should work with any Django application that uses PyMongo.

Obtaining stack traces can slow down queries significantly. To turn them off add the following lines to your settings.py:

DEBUG_TOOLBAR_MONGO_STACKTRACES = False

Disclaimer: only tested in latest Chrome, may fall to pieces in other browers. If you feel like fixing it, contributions are welcome!




django-debug-toolbar-user-panel ⭐ 10+ 🍴 10+

GitHub logo playfire / django-debug-toolbar-user-panel

Panel for the Django Debug toolbar to quickly switch between users




👉 E-commerce.

🔝 Go To TOC

saleor ⭐ 16.8k+ 🍴 4.7k+

GitHub logo agiliq / merchant

A Django app to accept payments from various payment processors via Pluggable backends.

Django-Merchant

TravisCI

Django-Merchant is a django application that enables you to use multiple payment processors from a single API.

Gateways

Following gateways are supported:

  • Authorize.net
  • Paypal
  • Eway
  • Braintree Payments (Server to Server)
  • Stripe
  • Paylane
  • WePay
  • Beanstream
  • Chargebee
  • Global Iris

Off-Site Processing

  • Paypal
  • RBS WorldPay
  • Amazon FPS
  • Braintree Payments (Transparent Redirect)
  • Stripe.js
  • eWAY
  • Authorize.net Direct Post Method
  • Global Iris RealMPI

Other

  • Bitcoin

Documentation

Documentation is automatically built and published online at:

http://readthedocs.org/docs/django-merchant/en/latest/

Support

There is a mailing list where discussion regarding the development and usage of merchant happens:

http://groups.google.com/group/django-merchant/




django-oscar ⭐ 5.4k+ 🍴 2.0k+

GitHub logo django-oscar / django-oscar

Domain-driven e-commerce for Django

https://github.com/django-oscar/django-oscar/raw/master/docs/images/logos/oscar.png

Domain-driven e-commerce for Django

Oscar is an e-commerce framework for Django designed for building domain-driven sites. It is structured such that any part of the core functionality can be customised to suit the needs of your project. This allows a wide range of e-commerce requirements to be handled, from large-scale B2C sites to complex B2B sites rich in domain-specific business logic.

Contents:

https://github.com/django-oscar/django-oscar/raw/master/docs/images/screenshots/oscarcommerce.thumb.png https://github.com/django-oscar/django-oscar/raw/master/docs/images/screenshots/readthedocs.thumb.png

Further reading:

Continuous integration status:

Coverage Requirements Status

PyPI status:

Docs status:

Documentation Status

Core team:

django-shop ⭐ 2.9k+ 🍴 900k+

GitHub logo awesto / django-shop

A Django based shop system

django-SHOP

Django-SHOP aims to be a the easy, fun and fast e-commerce counterpart to django-CMS.

Build Status PyPI version Python versions Join the chat at https://gitter.im/awesto/django-shop Software license Twitter Follow

Here you can find the full documentation for django-SHOP.

Build the database model out of the product's properties – not vice versa

Most e-commerce systems are shipped with a predefined database model for products. But products can vary a lot, and it simply is impossible to create a model which fits for all of them. This is esspecially true for products with a hierarchy of variants. In many popular e-commerce platforms you either have far too many attributes per product, and/or the really required attributes are missing.

In django-SHOP implementations, the product models reflect their pysical properties making it possible to create complete and deep hierarchies of variations, but without having to fiddle with unneeded properties. It furthermore avoids the need for an Entity Attribute Value Model, which is considered a database…

shuup ⭐ 1.9k+ 🍴 900+

GitHub logo shuup / shuup

E-Commerce Platform

https://travis-ci.org/shuup/shuup.svg?branch=master https://coveralls.io/repos/github/shuup/shuup/badge.svg?branch=master PyPI Known Vulnerabilities

Shuup

Shuup is an Open Source E-Commerce Platform based on Django and Python.

https://shuup.com/

Copyright

Copyright (c) 2012-2021 by Shuup Commerce Inc. <support@shuup.com>

Shuup is International Registered Trademark & Property of Shuup Commerce Inc., Business ID: BC1126729, Business Address: 1500 West Georgia Suite 1300, Vancouver, BC, V6G-2Z6, Canada.

CLA

Contributor License Agreement is required for any contribution to this project. Agreement is signed as a part of pull request process. See the CLA.rst file distributed with Shuup.

License

Shuup is published under Open Software License version 3.0 (OSL-3.0). See the LICENSE file distributed with Shuup.

Some external libraries and contributions bundled with Shuup may be published under other compatible licenses. For these, please refer to VENDOR-LICENSES.md file in the source code tree or the licenses included within each package.

Chat

We have a Gitter chat room for Shuup. Come chat with us! Join chat

Docker quick start

Fastest way to…

eCommerce ⭐ 1.3k+ 🍴 700+

GitHub logo codingforentrepreneurs / eCommerce

We're going to take you step-by-step to build a modern, fully open-source, eCommerce web application using Python, Django, Bootstrap, Javascript, and more.

eCommerce

eCommerce Logo

This course will teach you step-by-step to build a eCommerce site from scratch. We'll be using open-source software to create each aspect of a fully functioning eCommerce business.

Full Course is here: https://www.joincfe.com/courses/ecommerce/

Below you'll find the related lecture code to any given section and lesson. Enjoy!

Code

Section - Hello World

Intial Commit

Section - Products Component

1 - Your first app Module

2 - Understanding CRUD

3 - Product Model

4 - Django Admin

5 - List View

6 - Detail View

7 - ImageField & FileField

8 - Understanding Lookups

9 - Custom Model Managers

10 - Featured & Custom QuerySets

11 - SlugField & Signals

12 - Products URLs

Section: Templates

1 Base Template

2 - Include Tag

3 Pass Arguments with Include

4 - Reusable List View Snippets

5 - Reverse for URLs

6 - Navbar

7 - Template Filters

8 - ForLoop Counter

merchant ⭐ 900+ 🍴 100k+

GitHub logo agiliq / merchant

A Django app to accept payments from various payment processors via Pluggable backends.

Django-Merchant

TravisCI

Django-Merchant is a django application that enables you to use multiple payment processors from a single API.

Gateways

Following gateways are supported:

  • Authorize.net
  • Paypal
  • Eway
  • Braintree Payments (Server to Server)
  • Stripe
  • Paylane
  • WePay
  • Beanstream
  • Chargebee
  • Global Iris

Off-Site Processing

  • Paypal
  • RBS WorldPay
  • Amazon FPS
  • Braintree Payments (Transparent Redirect)
  • Stripe.js
  • eWAY
  • Authorize.net Direct Post Method
  • Global Iris RealMPI

Other

  • Bitcoin

Documentation

Documentation is automatically built and published online at:

http://readthedocs.org/docs/django-merchant/en/latest/

Support

There is a mailing list where discussion regarding the development and usage of merchant happens:

http://groups.google.com/group/django-merchant/




django-lfs ⭐ 500+ 🍴 200+

GitHub logo diefenbach / django-lfs

An online-shop based on Django

What is it?

LFS is an online shop based on Python, Django and jQuery.

Information

For more information please visit:

Documentation

For the latest documentation please visit:

Demo shop

A demo shop can be tried here:

Development

For development environment please visit:

Changes

0.11.0 (2017-03-09)

  • Adds Django 1.10 support
  • Excludes variants from sitemap
  • Add appending slash to all urls
  • Use F() expressions to update stock amount (#203)
  • Use F() expression to increase use_amount for vouchers (#202)
  • Removes django-pagination (use Django's default one instead)
  • remove STATIC_URL (user static_url tag instead)
  • fix saving properties and variant prices [pigletto]

0.10.2 (2015-04-25)

  • Updates lfs-paypal to 1.3
  • Fixes all tests

0.10.1 (2015-04-23)

  • Fixes MANIFEST.in
  • Fixes adding and display of reviews when L10N is turned on

0.10.0 (2015-04-22)

  • Adds Django 1.8 support
  • Moves static files to lfs.manage
  • Moves manage templates to lfs.manage

HISTORY

For the complete history please look into HISTORY.txt




django-ecommerce-project ⭐ 200+ 🍴 200+

GitHub logo veryacademy / django-ecommerce-project

The Django-Ecommerce is an open-source project initiative and tutorial series built with Python and the Django Framework.

veryacademy

Django E-commerce Tutorial Series

Learn Python and the Django Framework by building a e-commerce website
The Django E-commerce project is an open-source initiative and tutorial series. Learn from a beginner level how to build an e-commerce website

Please join our active, growing community:
Website (Coming Soon) | Twitter | YouTube

Aims of this course

The aims of this course is to:

  • learn the Django framework
  • learn how to build, test and deploy a Django application

Course Introduction

The Django E-commerce Tutorial Series is designed for students who wants to learn the Django Framework by building an e-commerce application. This course is a great way to start learning Python and the Django Framework. We start from a beginners level slowly moving into more advanced topics. I have tried to design this course to be modular so that you could also focus in on particular subjects, tutorials or aspects of Django should…

django-oscar-paypal ⭐ 100+ 🍴 200+

GitHub logo django-oscar / django-oscar-paypal

PayPal integration for django-oscar. Can be used without Oscar too.

PayPal package for django-oscar

This package provides integration between django-oscar and both PayPal REST API, PayPal Express (NVP) and PayPal Payflow Pro.

These payment options can be used individually or together. Further, the package is structured so that it can be used without Oscar if you so wish.

License

The package is released under the New BSD license.

Support

Having problems or got a question?

  • Have a look at the sandbox site as this is a sample Oscar project integrated with both PayPal options. See the contributing guide within the docs for instructions on how to set up the sandbox locally.
  • Ping @django_oscar with quick queries.
  • Ask more detailed questions on the Oscar mailing list: django-oscar@googlegroups.com
  • Use Github for submitting issues and pull requests.

Tests

Coverage

Changelog

2.0.0 (released December 20th, 2019)

  • Add support for Oscar 2.0 and Django 2.2.
  • Drop support for Oscar 1.6 and…

👉 Forms.

🔝 Go To TOC

django-crispy-forms ⭐ 4.5k+ 🍴 700+

GitHub logo django-crispy-forms / django-crispy-forms

The best way to have DRY Django forms. The app provides a tag and filter that lets you quickly render forms in a div format while providing an enormous amount of capability to configure and control the rendered HTML.

django-crispy-forms

http://codecov.io/github/django-crispy-forms/django-crispy-forms/coverage.svg?branch=main

The best way to have Django DRY forms. Build programmatic reusable layouts out of components, having full control of the rendered HTML without writing HTML in templates. All this without breaking the standard way of doing things in Django, so it plays nice with any other form application.

django-crispy-forms supports Django 4.2+ with Python 3.8+.

Looking for Bootstrap 5 support? See the crispy-bootstrap5 package.

The application mainly provides:

  • A filter named |crispy that will render elegant div based forms. Think of it as the built-in methods: as_table, as_ul and as_p. You cannot tune up the output, but it is easy to start using it.
  • A tag named {% crispy %} that will render a form based on your configuration and specific layout setup. This gives you amazing power without much hassle, helping you save tons of time.

Django-crispy-forms supports several frontend frameworks, such as Twitter Bootstrap

django-bootstrap3 ⭐ 2.3k+ 🍴 600+

GitHub logo zostera / django-bootstrap3

Bootstrap 3 integration with Django.

django-bootstrap3

CI Coverage Status Latest PyPI version

Bootstrap 3 for Django.

Goal

The goal of this project is to seamlessly blend Django and Bootstrap 3.

Status

This project will receive updates for supported Python and Django versions. Otherwise, we will probably not accept any changes.

Requirements

This package requires a combination of Python and Django that is currently supported.

See "Supported Versions" on https://www.djangoproject.com/download/.

Documentation

The full documentation is at https://django-bootstrap3.readthedocs.io/

Installation

  1. Install using pip:

    pip install django-bootstrap3
    Enter fullscreen mode Exit fullscreen mode

    Alternatively, you can install download or clone this repo and call pip install -e ..

  2. Add to INSTALLED_APPS in your settings.py:

    INSTALLED_APPS = (
        # ...
        "bootstrap3",
        # ...
    )
    Enter fullscreen mode Exit fullscreen mode
  3. In your templates, load the bootstrap3 library and use the bootstrap_* tags:

Example template

{%

django-smart-selects ⭐ 1k+ 🍴 300+

GitHub logo jazzband / django-smart-selects

chained and grouped selects for django forms

Django Smart Selects

Jazzband Build Status Coverage Status PyPI

This package allows you to quickly filter or group "chained" models by adding a custom foreign key or many to many field to your models. This will use an AJAX query to load only the applicable chained objects.

Works with Django version 3.2 to 5.0.

Warning: The AJAX endpoint enforces no permissions by default. This means that any model with a chained field will be world readable. If you would like more control over this permission, the django-autocomplete-light package is a great, high-quality package that enables the same functionality with permission checks.

Documentation

For more information on installation and configuration see the documentation at:

https://django-smart-selects.readthedocs.io/

Reporting issues / sending PRs

You can try the test_app example using:

python manage.py migrate
python manage.py loaddata test_app/fixtures/*
python manage.py runserver
Enter fullscreen mode Exit fullscreen mode

Then login with admin/admin at http://127.0.0.1:8000/admin/

TODO

  • Add permission checks to enable users to restrict who can…

django-bootstrap4 ⭐ 900+ 🍴 200+

GitHub logo zostera / django-bootstrap4

Bootstrap 4 integration with Django.

django-bootstrap 4

Tests Coverage Status Latest PyPI version

Bootstrap 4 for Django.

Goal

The goal of this project is to seamlessly blend Django and Bootstrap 4.

Requirements

This package requires a combination of Python and Django that is currently supported.

See "Supported Versions" on https://www.djangoproject.com/download/.

Documentation

The full documentation is at https://django-bootstrap4.readthedocs.io/

Installation

  1. Install using pip:
pip install django-bootstrap4
Enter fullscreen mode Exit fullscreen mode

Alternatively, you can install download or clone this repo and call pip install -e ..

  1. Add to INSTALLED_APPS in your settings.py:
INSTALLED_APPS = (
  # ...
  "bootstrap4",
  # ...
)
Enter fullscreen mode Exit fullscreen mode
  1. In your templates, load the bootstrap4 library and use the bootstrap_* tags. See example below.

Example template

{% load bootstrap4 %}
{# Display a form #}

<form action="/url/to/submit/" method="post" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class
Enter fullscreen mode Exit fullscreen mode

django-bootstrap-modal-forms ⭐ 300+ 🍴 100+

GitHub logo trco / django-bootstrap-modal-forms

A Django plugin for creating AJAX driven forms in Bootstrap modal.

django-forms-builder ⭐ 600+ 🍴 200+

GitHub logo stephenmcd / django-forms-builder

Let users build forms in Django admin

https://secure.travis-ci.org/stephenmcd/django-forms-builder.png?branch=master

django-forms-builder

Created by Stephen McDonald

A Django reusable app providing the ability for admin users to create their own forms within the admin interface, drawing from a range of field widgets such as regular text fields, drop-down lists and file uploads. Options are also provided for controlling who gets sent email notifications when a form is submitted. All form entries are made available in the admin via filterable reporting with CSV/XLS export.

Form builder:

https://raw.githubusercontent.com/stephenmcd/django-forms-builder/master/docs/img/fields.png

Data reporting:

https://raw.githubusercontent.com/stephenmcd/django-forms-builder/master/docs/img/report.png

HTML5 Features

The following HTML5 form features are supported.

  • placeholder attributes
  • required attributes
  • email fields
  • date fields
  • datetime fields
  • number fields
  • url fields

Installation

The easiest way to install django-forms-builder is directly from PyPi using pip by running the command below:

$ pip install -U django-forms-builder
Enter fullscreen mode Exit fullscreen mode

Otherwise you can download django-forms-builder and install it directly from source:

$ python setup.py install
Enter fullscreen mode Exit fullscreen mode

Once installed you can configure your project to use django-forms-builder with the following…

django-formtools ⭐ 500+ 🍴 100+

GitHub logo jazzband / django-formtools

A set of high-level abstractions for Django forms

django-formtools

Jazzband PyPI version Supported Python versions GitHub Actions Test Coverage

Django's "formtools" is a set of high-level abstractions for Django forms Currently for form previews and multi-step forms.

This code used to live in Django proper -- in django.contrib.formtools -- but was separated into a standalone package in Django 1.8 to keep the framework's core clean.

For a full list of available formtools, see https://django-formtools.readthedocs.io/

django-formtools can also be found on and installed from the Python Package Index: https://pypi.python.org/pypi/django-formtools

To get more help:

Contributing to django-formtools

See CONTRIBUTING.rst for information about contributing patches to django-formtools.

Running tests is as simple as installing Tox and running it in the root Git clone directory:

$ git clone https://github.com/jazzband/django-formtools
[..]
$ cd django-formtools
$ tox
[..]
  congratulations :)

The previous command will run the tests in…

django-remote-forms ⭐ 200+ 🍴 100+

GitHub logo WiserTogether / django-remote-forms

A platform independent django form serializer

django-remote-forms

A package that allows you to serialize django forms, including fields and widgets into Python dictionary for easy conversion into JSON and expose over API

Please go through my djangocon US 2012 talk to understand the problem sphere, motivations, challenges and implementation of Remote Forms

Sample Implementation

If you don't mind digging around a little bit to learn about different the components that might be necessary for an implementation of django-remote-forms, check out django Remote Admin django-remote-admin

Usage

Minimal Example

from django_remote_forms.forms import RemoteForm

form = LoginForm()
remote_form = RemoteForm(form)
remote_form_dict = remote_form.as_dict()
Enter fullscreen mode Exit fullscreen mode

Upon converting the dictionary into JSON, it looks like this:

{
    "is_bound": false
    "non_field_errors": [],
    "errors": {},
    "title": "LoginForm",
    "fields": {
        "username": {
            "title": "CharField",
            "required": true,
            "label": "Username
Enter fullscreen mode Exit fullscreen mode

django-betterforms ⭐ 100+ 🍴 10+

GitHub logo fusionbox / django-betterforms

Making forms suck less

django-betterforms

Build Status Build Status

django-betterforms builds on the built-in django forms.

Installation

  1. Install the package:

    $ pip install django-betterforms
    
  2. Add betterforms to your INSTALLED_APPS.




django-bootstrap5 ⭐ 100+ 🍴 10+

GitHub logo zostera / django-bootstrap5

Bootstrap 5 for Django

django-bootstrap5

Tests Coverage Status Latest PyPI version

Bootstrap 5 for Django.

Goal

The goal of this project is to seamlessly blend Django and Bootstrap 5.

Status

Ready for production. Issues and pull requests welcome, see CONTRIBUTING.md.

Requirements

This package requires a combination of Python and Django that is currently supported.

See "Supported Versions" on https://www.djangoproject.com/download/.

Documentation

The full documentation is at https://django-bootstrap5.readthedocs.io/

Installation

  1. Install using pip:

    pip install django-bootstrap5
    Enter fullscreen mode Exit fullscreen mode
  2. Add to INSTALLED_APPS in your settings.py:

    INSTALLED_APPS = (
        # ...
        "django_bootstrap5",
        # ...
    )
    Enter fullscreen mode Exit fullscreen mode
  3. In your templates, load the django_bootstrap5 library and use the bootstrap_* tags. See example below.

Example template

{% load django_bootstrap5 %}

<form action="/url/to/submit/" method="post" class="form">
    {% csrf_token %}

    {% bootstrap_form form %}

    {% bootstrap_button button_type="submit" content="OK" %}
    {% bootstrap_button button_type="reset" content="Cancel" %}
</form>
Enter fullscreen mode Exit fullscreen mode

django-form-fun ⭐ 100+ 🍴 200+




django-mongodbforms ⭐ 10+ 🍴 10+

GitHub logo jschrewe / django-mongodbforms

Django forms for mongodb documents

django mongodbforms

This is an implementation of django's model forms for mongoengine documents.

Requirements

Supported field types

Mongodbforms supports all the fields that have a simple representation in Django's formfields (IntField, TextField, etc). In addition it also supports ListFields and MapFields.

File fields

Mongodbforms handles file uploads just like the normal Django forms. Uploaded files are stored in GridFS using the mongoengine fields. Because GridFS has no directories and stores files in a flat space an uploaded file whose name already exists gets a unique filename with the form <filename>_<unique_number>.<extension>.

Container fields

For container fields like ListFields and MapFields a very simple widget is used. The widget renders the container content in the appropriate field plus one empty field. This is mainly done to not introduce any Javascript dependencies, the backend code will happily handle any kind of dynamic form, as long…

👉 Geolocation.

🔝 Go To TOC

django-countries ⭐ 1.2k+ 🍴 200+

GitHub logo SmileyChris / django-countries

A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries

PyPI version Build status

A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Country names are translated using Django's standard gettext. If you would like to help by adding a translation, please visit https://www.transifex.com/smileychris/django-countries/

Installation

  1. pip install django-countries

    For more accurate sorting of translated country names, install it with the optional pyuca package:

    pip install django-countries[pyuca]

  2. Add django_countries to INSTALLED_APPS

CountryField

A country field for Django models that provides all ISO 3166-1 countries as choices.

CountryField is based on Django's CharField, providing choices corresponding to the…

django-places ⭐ 10+ 🍴 10+

GitHub logo oscarmcm / django-places

A django app for store places with autocomplete

PyPI

A Django app for store places with autocomplete function and a related map to the selected place.

Quickstart


Install dj-places and add it to your installed apps:

$ pip install dj-places
    INSTALLED_APPS = (
        ...
        'places',
        ...
    )

Add the following settings and maps api key (read more here):

PLACES_MAPS_API_KEY='YourAwesomeUltraSecretKey'
PLACES_MAP_WIDGET_HEIGHT=480
PLACES_MAP_OPTIONS='{"center": { "lat": 38.971584, "lng": -95.235072 }, "zoom": 10}'
PLACES_MARKER_OPTIONS='{"draggable": true}'
Enter fullscreen mode Exit fullscreen mode

Usage


Then use it in a project:

from django.db import models
from places.fields import PlacesField


class MyLocationModel(models.Model):
    location = PlacesField()
Enter fullscreen mode Exit fullscreen mode

This enables the following API:

    >>> from myapp.models import ModelName
    >>> poi = ModelName.objects.get(id=1)
    >>> poi.position
    Place('Metrocentro, Managua, Nicaragua', 52.522906, 13.41156)
    >>> poi.position
Enter fullscreen mode Exit fullscreen mode

geodjango ⭐ 10+ 🍴 1+

GitHub logo paulsmith / geodjango

GeoDjango provides geospatial extensions to the Django web dev framework

Django is a high-level Python Web framework that encourages rapid development
and clean, pragmatic design
All documentation is in the "docs" directory and online at
http://www.djangoproject.com/documentation/.  If you're just getting started
here's how we recommend you read the docs
    * First, read docs/install.txt for instructions on installing Django.

    * Next, work through the tutorials in order (docs/tutorial01.txt,
      docs/tutorial02.txt, etc.).

    * If you want to set up an actual deployment server, read docs/modpython.txt
      for instructions on running Django under mod_python.

    * The rest of the documentation is of the reference-manual variety.
      Read it -- and the FAQ -- as you run into problems.

Docs are updated rigorously. If you find any problems in the docs, or think they
should be clarified in any way, please take 30 seconds to fill out a ticket
here:

http://code.djangoproject.com/newticket

To get more help:

    * Join the #django channel on irc.freenode.net. Lots of helpful people

ipapi-python ⭐ 10+ 🍴 10+

GitHub logo ipapi-co / ipapi-python

Python bindings for https://ipapi.co (IP Address Location) - Use with python / django / flask for IP address location lookup

ipapi Python Library ~ ipapi.co by Kloudend, Inc.

IP Address Location | IP Lookup | IP Geolocation API

The ipapi Python library provides convenient access to the IP address location service from applications written in the Python language. It makes it easy to harness the potential of the IP geolocation API.

Details on free IP lookup and ipapi pricing plans

Documentation

See the ipapi API docs

Installation

pip install --upgrade ipapi

or Install from source with:

python setup.py install

Requirements

Python 2.7+ or Python 3.4+

QuickStart

>>> import ipapi

>>> ipapi.location()
{
  "ip": "8.8.8.8",
  "city": "Mountain View",
  "country": "US",
  "timezone": "America/Los_Angeles",
  ...
}
Enter fullscreen mode Exit fullscreen mode

Usage : As an IP Location library

import ipapi

ipapi.location(ip, key, output)
Enter fullscreen mode Exit fullscreen mode
Argument Description
ip IP Address (IPv4 or IPv6) that you wish to locate.
If

Django-with-Geolocation ⭐ 10+ 🍴 10+

GitHub logo pyplane / Django-with-Geolocation

GeoLocation and Folium Project with Django.

Django with GeoLocation

GeoLocation and Folium Project with Django.

Calculate and visualize the distance between the current location and the destination.

alt text




django-ip-geolocation ⭐ 10+ 🍴 1+

GitHub logo rednaks / django-ip-geolocation

IP Geolocation Hooks for django

PyPI version Downloads Build Status

Django Ip Geolocation

Django request/response hooks to geolocate visitors by their ip address.

Installing

python -m pip install django-ip-geolocation

Usage

Decorator

Use decorators to decorate views:

from django_ip_geolocation.decorators import with_ip_geolocation

@with_ip_geolocation
def api_view(request):
   location = request.geolocation
   ...
Enter fullscreen mode Exit fullscreen mode

Middleware

First you need to add the middleware into your settings.py.

MIDDLEWARE = [
    ...
    'django_ip_geolocation.middleware.IpGeolocationMiddleware',
    ...
]
Enter fullscreen mode Exit fullscreen mode

Then the location is available to all views in request and response:

def api_view(request):
   location = request.geolocation
   ...
   
def other_view(request):
  location = request.geolocation
  ...
Enter fullscreen mode Exit fullscreen mode

Cookie

Geolocation data stored in the Response cookie lacks the raw_data and is base64 encoded.

User consent

Developers must implement a helper function to check if the user consented or not and configure it in the settings.py.

By default if the developer didn't provide a…

👉 Job Scheduler.

🔝 Go To TOC

django-schedule ⭐ 800+ 🍴 200+

GitHub logo thauber / django-schedule

A calendaring app for Django. It is now stable, Please feel free to use it now. Active development has been taken over by bartekgorny.

Django-schedule

A calendaring/scheduling application, featuring:

  • one-time and recurring events
  • calendar exceptions (occurrences changed or cancelled)
  • occurrences accessible through Event API and Period API
  • relations of events to generic objects
  • ready to use, nice user interface
  • view day, week, month, three months and year
  • project sample which can be launched immediately and reused in your project

See see wiki page for more.

Installation

Download the code; put in into your project’s directory or run

python setup.py install
to install system-wide

REQUIREMENTS: python-vobject (comes with most distribution as a package).

Settings.py

REQUIRED

INSTALLED_APPS – add:
‘schedule’

TEMPLATE_CONTEXT_PROCESSORS – add:
“django.core.context_processors.request”

Optional

FIRST_DAY_OF_WEEK

This setting determines which day of the week your calendar begins on if your locale doesn’t already set it. Default is 0, which is Sunday.

OCCURRENCE_CANCEL_REDIRECT

This setting controls the behavior of :func:`Views.get_next_url`. If set, all calendar modifications will redirect here (unless there is a `next` set in the…

django-crontab ⭐ 700+ 🍴 100+

GitHub logo kraiz / django-crontab

dead simple crontab powered job scheduling for django.

about

dead simple crontab powered job scheduling for django (1.8-2.0).

setup

install via pip:

pip install django-crontab
Enter fullscreen mode Exit fullscreen mode

add it to installed apps in django settings.py:

INSTALLED_APPS = (
    'django_crontab',
    ...
)
Enter fullscreen mode Exit fullscreen mode

now create a new method that should be executed by cron every 5 minutes, f.e. in myapp/cron.py:

def my_scheduled_job():
  pass
Enter fullscreen mode Exit fullscreen mode

now add this to your settings.py:

CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]
Enter fullscreen mode Exit fullscreen mode

you can also define positional and keyword arguments which let you call django management commands:

CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.other_scheduled_job', ['arg1', 'arg2'], {'verbose': 0}),
    ('0   4 * * *', 'django.core.management.call_command', ['clearsessions']),
]
Enter fullscreen mode Exit fullscreen mode

finally, run this command to add all defined jobs from CRONJOBS to crontab (of the user which you are running this command with):

python manage.py crontab add
Enter fullscreen mode Exit fullscreen mode

show…

django-rq-scheduler ⭐ 10+ 🍴 10+

GitHub logo islco / django-rq-scheduler

A database backed job scheduler for Django RQ and RQ Scheduler

Django RQ Scheduler

A database backed job scheduler for Django RQ.

Requirements

Currently, when you pip install Django RQ Scheduler the following packages are also installed.

  • django >= 1.9
  • django-model-utils >= 2.4
  • django-rq >= 0.9.3 (Django RQ requires RQ >= 0.5.5)
  • rq-scheduler >= 0.6.0
  • pytz >= 2015.7
  • croniter >= 0.3.24

Testing also requires:

  • factory_boy >= 2.6.1
  • psycopg2 >= 2.6.1

Usage

Install

Use pip to install:

pip install django-rq-scheduler

Update Django Settings

  1. In settings.py, add django_rq and scheduler to INSTALLED_APPS:

    
    INSTALLED_APPS = [
        ...
        'django_rq',
        'scheduler',
        ...
    ]
    
    
    
  2. Configure Django RQ. See https://github.com/ui/django-rq#installation

Migrate

The last step is migrate the database:

./manage.py migrate

Creating a Job

See http://python-rq.org/docs/jobs/ or https://github.com/ui/django-rq#job-decorator

An example:

myapp.jobs.py

@job
def count():
    return 1 + 1

Scheduling a Job

Scheduled Job

  1. Sign into the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.

  2. Click on the Add link for Scheduled Job.

  3. Enter a…

django-future ⭐ 10+ 🍴 10+

GitHub logo shrubberysoft / django-future

Scheduled jobs in Django

-----
About
-----
**django-future** is a Django application for scheduling jobs on specified
times
**django-future** allows you to schedule invocation of callables at a given
time.  The job queue is stored in the database and can be managed through the
admin interface.  Queued jobs are run by invoking an external django management
command
-----
Usage
-----

You need to have **django-future** installed. A recent version should be
available from PyPI.

To schedule jobs from your code, use the ``schedule_job`` function::

    >>> from django_future import schedule_job
    >>> import datetime

    >>> schedule_job(datetime.datetime(2010, 10, 10),
    ...              'myproject.myapp.handlers.dosomething')

------------
Running jobs
------------

Scheduled jobs will not start automagically.  The job queue must regularly
be processed by invoking the Django management command
``runscheduledjobs``.  You will probably want to run this command regularly,
perhaps in a cron job, to ensure that scheduled jobs are run in a timely
manner.

When the job processor is started, it

django-rq-jobs ⭐ 10+ 🍴 10+

GitHub logo Koed00 / django-rq-jobs

Provides scheduled jobs management from the Django Admin using Django-RQ

#Django RQ Jobs

Provides scheduled jobs management from the Django Admin using Django-RQ

Admin Screenshot

##Requirements

##Installation

  • Make sure you have Django-RQ up and running before you do anything This app is just a simple admin plugin to manage your scheduled tasks and management commands.

  • Install the package with pip install django-rq-jobs

  • Add django_rq_jobs to INSTALLED_APPS in settings.py:

INSTALLED_APPS = (
    # other apps
    "django_rq",
    "django_rq_jobs",
)
Enter fullscreen mode Exit fullscreen mode
  • Add RQ_JOBS_MODULE in settings.py. A string or a tuple of strings designating all modules where you keep your jobs. Anything marked with the Django RQ's @job decorator will show up in the admin.
# A singe module:
RQ_JOBS_MODULE = 'myapp.tasks'

# or with multiple modules:
RQ_JOBS_MODULE = (
    'myapp.tasks',
    'anotherapp.tasks',
)
Enter fullscreen mode Exit fullscreen mode
  • Run python manage.py migrate to create the job model.

  • Open your Django admin and find the RQ Jobs scheduled job section and schedule something.

  • Schedule the heartbeat…

👉 News Feed.

🔝 Go To TOC

django-activity-stream ⭐ 2.1k+ 🍴 400+

GitHub logo justquick / django-activity-stream

Generate generic activity streams from the actions on your site. Users can follow any actors' activities for personalized streams.

Django Activity Stream

Join the chat at https://gitter.im/django-activity-stream/Lobby https://coveralls.io/repos/github/justquick/django-activity-stream/badge.svg?branch=master https://scrutinizer-ci.com/g/justquick/django-activity-stream/badges/quality-score.png?b=master

What is Django Activity Stream?

Django Activity Stream is a way of creating activities generated by the actions on your site.

It is designed for generating and displaying streams of interesting actions and can handle following and unfollowing of different activity sources. For example, it could be used to emulate the Github dashboard in which a user sees changes to projects they are watching and the actions of users they are following.

Action events are categorized by four main components.

  • Actor. The object that performed the activity.
  • Verb. The verb phrase that identifies the action of the activity.
  • Action Object. (Optional) The object linked to the action itself.
  • Target. (Optional) The object to which the activity was performed.

Actor, Action Object and Target are GenericForeignKeys to any arbitrary Django object and so can represent any Django model in your project An action…

stream-django ⭐ 400+ 🍴 10+

GitHub logo GetStream / stream-django

Django Client - Build Activity Feeds & Streams with GetStream.io

Stream Django

build PyPI version

stream-django is a Django client for Stream, it supports Django from 1.11 up to and including 4.0 using Python 2.7 and 3.4, 3.5, 3.6+.

You can sign up for a Stream account at https://getstream.io/get_started.

Note there is also a lower level Python - Stream integration library which is suitable for all Python applications.

💡 This is a library for the Feeds product. The Chat SDKs can be found here.

Build activity streams & news feeds

Examples of what you can build

You can build:

  • Activity streams such as seen on Github
  • A twitter style newsfeed
  • A feed like instagram/ pinterest
  • Facebook style newsfeeds
  • A notification system

Example apps

You can check out our example apps built using this library (you can deploy them directly to Heroku with 1 click):

Table of Contents

django-user-streams ⭐ 10+ 🍴 10+

GitHub logo dabapps / django-user-streams

DEPRECATED: Simple, fast user news feeds for Django

django-user-streams

Simple, fast user news feeds for Django

Author: Jamie Matthews. Follow me on Twitter.

build-status-image

Requirements

  • Django 1.3, 1.4, 1.5

Overview

An app for creating news feeds (also known as activity streams) for users, notifying them of activity happening around your site. Optimised for speed, pluggability and simplicity.

News feed items are stored as a string and a timestamp. You can't store any additional metadata about the stream items, such as generic foreign keys to and Actor or a Target. You just store the item content as plain text (or HTML). If you need links to other objects, just insert an <a> tag.

DEPRECATED

PLEASE NOTE: This repository is no longer actively maintained or regularly used by DabApps and therefore should be considered deprecated. Please find alternative packages for your needs or feel free to create and maintain your own fork.

Installation

You can install django-user-streams from…

Singular-New ⭐ 1+ 🍴 10+

GitHub logo ExpressHermes / Singular-News

A Django news app powered with machine learning to provide personalised feed to the users based on their interactions on the app.

Singular News

Gitter

A news app powered with machine learning to provide personalized feed to the users based on their interactions on the app.

Installation

Prerequsites

  • Python
  • Django
  • PostgreSQL

How to set up locally

  • Fork and clone repo on your machine.

    git clone https://github.com/ExpressHermes/Singular-News.git
    
  • Create a virtual environment. Activate it. Make sure it is in the same directory as the cloned repo.

    # for linux users
    python -m venv <env-name>
    source venv/bin/activate 
    
  • Install all requirements.

    pip install -r requirements.txt
    
  • In settings.py inside Indus, replace email settings with your email address and password to allow email verification. Remember to remove these when committing to github.

    EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER') # relpace with your email
    EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD') # replace with email password
    
  • Inside the project folder, create migrations for the apps users and feeds

    python manage.py makemigrations
    python manage.py migrate
    
  • Run the project

    python manage.py runserver
    

Contribution Guidelines

  • Fork and star the repo.

Location-based-news-recommendation ⭐ 1+ 🍴 1+

GitHub logo AselSiriwardena / Location-based-news-recommendation

A news recommendation system uses RSS news feeds in major Sri Lankan news sources and suggests them to users based on user's interests and the location.

Location-based-news-reccomendation

Our problem is that now a days people getting various news feeds and for them they act like garbage Because most of them are useless for users. So it is better if we can arrange news feed according to users preference and categorize them So in arranging it is better to organize based on location or user related feeds. So as a result we decide to create user friendly system without wasting their valuable time and their related areas, locations.

In this project we are trying to get users preferences about their news choices and as a result of hectic life pattern of people we are going to recommend our users what they only wish to watch. Another feature of this is that this is according to location. So technologies we are wishing to use are ML, NLP, Web Crowling etc

when publisher upload some articles into their system…

👉 ORM.

🔝 Go To TOC

django-model-utils ⭐ 2.3k+ 🍴 300+

GitHub logo jazzband / django-model-utils

Django model mixins and utilities.




django-cacheops ⭐ 1.7k+ 🍴 200+

GitHub logo Suor / django-cacheops

A slick ORM cache with automatic granular event-driven invalidation.

Cacheops Build Status

A slick app that supports automatic or manual queryset caching and automatic granular event-driven invalidation.

It uses redis as backend for ORM cache and redis or filesystem for simple time-invalidated one.

And there is more to it:

  • decorators to cache any user function or view as a queryset or by time
  • extensions for django and jinja2 templates
  • transparent transaction support
  • dog-pile prevention mechanism
  • a couple of hacks to make django faster

Python 3.7+, Django 3.2+ and Redis 4.0+.

Using pip:

$ pip install django-cacheops

# Or from github directly
$ pip install git+https://github.com/Suor/django-cacheops.git@master
Enter fullscreen mode Exit fullscreen mode

Add cacheops to your INSTALLED_APPS

django-money ⭐ 1.3k+ 🍴 200+

GitHub logo django-money / django-money

Money fields for Django forms and models.

django-money

Build Status Coverage Status Documentation Status PyPI

A little Django app that uses py-moneyed to add support for Money fields in your models and forms.

  • Django versions supported: 2.2, 3.2, 4.0, 4.1, 4.2
  • Python versions supported: 3.7, 3.8, 3.9, 3.10, 3.11
  • PyPy versions supported: PyPy3 (for Django <= 4.0)

If you need support for older versions of Django and Python, please refer to older releases mentioned in the release notes.

Through the dependency py-moneyed, django-money gets:

  • Support for proper Money value handling (using the standard Money design pattern)
  • A currency class and definitions for all currencies in circulation
  • Formatting of most currencies with correct currency sign

Installation

Using pip:

$ pip install django-money
Enter fullscreen mode Exit fullscreen mode

This automatically installs py-moneyed v1.2 (or later).

Add djmoney to your INSTALLED_APPS. This is required so that money field are displayed correctly in the admin.

INSTALLED_APPS = [
   ...,
   'djmoney',
   ...
]
Enter fullscreen mode Exit fullscreen mode

Model usage

Use as normal model fields:

Enter fullscreen mode Exit fullscreen mode

django-modeltranslation ⭐ 1.1k+ 🍴 200+

GitHub logo deschler / django-modeltranslation

Translates Django models using a registration approach.

Modeltranslation

Stand With Ukraine
http://img.shields.io/coveralls/deschler/django-modeltranslation.svg?style=flat-square Latest PyPI version Supported Python versions Join the chat at https://gitter.im/django-modeltranslation/community

The modeltranslation application is used to translate dynamic content of existing Django models to an arbitrary number of languages without having to change the original model classes. It uses a registration approach (comparable to Django's admin app) to be able to add translations to existing or new projects and is fully integrated into the Django admin backend.

The advantage of a registration approach is the ability to add translations to models on a per-app basis. You can use the same app in different projects, may they use translations or not, and you never have to touch the original model class.

Features

  • Add translations without changing existing models or views
  • Translation fields are stored in the same table (no expensive joins)
  • Supports inherited models (abstract and multi-table inheritance)
  • Handle more than just text fields
  • Django admin integration
  • Flexible fallbacks, auto-population and more!

For the latest documentation, visit https://django-modeltranslation.readthedocs.io/en/latest/.




django-cache-machine ⭐ 800+ 🍴 100+

GitHub logo django-cache-machine / django-cache-machine

Automatic caching and invalidation for Django models through the ORM.

Cache Machine

Cache Machine provides automatic caching and invalidation for Django models through the ORM.

For full docs, see https://cache-machine.readthedocs.org/en/latest/.

Requirements

Cache Machine currently works with:

  • Django 2.2, 3.0, 3.1, 3.2, and 4.0
  • Python 3.6, 3.7, 3.8, 3.9, and 3.10

The last version to support Python 2.7 and Django 1.11 is django-cache-machine==1.1.0.

Installation

Get it from pypi:

pip install django-cache-machine

Running Tests

Get it from github:

git clone git://github.com/django-cache-machine/django-cache-machine.git
cd django-cache-machine
pip install -r dev-requirements.txt
python run_tests.py



Django-ORM ⭐ 200+ 🍴 10+

GitHub logo dancaron / Django-ORM

Django-ORM-Standalone Template - Use the power of Django's database functionality in regular python scripts.

Django ORM Standalone

Django Python

Use the database components of Django without having to use the rest of Django (i.e. running a web server)! 🎉 A typical use case for using this template would be if you are writing a python script and you would like the database functionality provided by Django, but have no need for the request/response functionalty of a client/server web application that Django also provides.

With this project template you can write regular python scripts and use Django's excellent ORM functionality with the database backend of your choice. This makes it convienient for Djangonauts to write database driven python applications with the familiar and well polished Django ORM. Enjoy.

⚙️ Requirements

  • Last tested successfully with Python 3.10.4 and Django 5.0.6
  • Create venv and pip install django to import the required modules.

📂 File Structure

django-orm/
├── db/
│   ├── __init__.py
│   └── models.py
├── main.py
├── manage.py
├──

👉 Permissions.

🔝 Go To TOC

django-guardian ⭐ 3.3k+ 🍴 500+

GitHub logo django-guardian / django-guardian

Per object permissions for Django

django-guardian

https://github.com/django-guardian/django-guardian/workflows/Tests/badge.svg?branch=devel

django-guardian is an implementation of per object permissions [1] on top of Django's authorization backend

Documentation

Online documentation is available at https://django-guardian.readthedocs.io/.

Requirements

  • Python 3.5+
  • A supported version of Django (currently 2.2+)

GitHub Actions run tests against Django versions 2.2, 3.0, 3.1, 3.2, 4.0, and main.

Installation

To install django-guardian simply run:

pip install django-guardian

Configuration

We need to hook django-guardian into our project.

  1. Put guardian into your INSTALLED_APPS at settings module:
INSTALLED_APPS = (
 ...
 'guardian',
)
Enter fullscreen mode Exit fullscreen mode
  1. Add extra authorization backend to your settings.py:
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', # default
    'guardian.backends.ObjectPermissionBackend',
)
Enter fullscreen mode Exit fullscreen mode
  1. Create guardian database tables by running:

    python manage.py migrate
    

Usage

After installation and project hooks we can finally use object permissions with Django.

Lets start really quickly:

>>> from django.contrib.auth.models import User, Group
>>> jack = User.objects.
Enter fullscreen mode Exit fullscreen mode

django-rules ⭐ 1.5k+ 🍴 100+

GitHub logo dfunckt / django-rules

Awesome Django authorization, without the database

rules

rules is a tiny but powerful app providing object-level permissions to Django, without requiring a database. At its core, it is a generic framework for building rule-based systems, similar to decision trees. It can also be used as a standalone library in other contexts and frameworks.

https://img.shields.io/github/workflow/status/dfunckt/django-rules/CI/master https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white

Features

rules has got you covered. rules is:

  • Documented, tested, reliable and easy to use.
  • Versatile. Decorate callables to build complex graphs of predicates Predicates can be any type of callable -- simple functions, lambdas, methods, callable class objects, partial functions, decorated functions, anything really.
  • A good Django citizen. Seamless integration with Django views, templates and the Admin for testing for object-level permissions.
  • Efficient and smart. No need to mess around with a database to figure out whether John really wrote that book.
  • Simple. Dive in the code. You'll need 10 minutes to figure out…

django-role-permissions ⭐ 500+ 🍴 100+

GitHub logo vintasoftware / django-role-permissions

A django app for role based permissions.

django-role-permissions

Build Status Coverage Status Current version at PyPI Supported Python Versions

django-role-permissions is a django app for role based permissions. It's built on top of django contrib.auth user Group and Permission functionalities and it does not add any other models to your project.

django-role-permissions supports Django versions from 1.5 until the latest.

Version 2.x now supports multiple roles!

Documentation

Documentation is available at:

http://django-role-permissions.readthedocs.org/

If you are still using the 1.x version the old documentation is at:

http://django-role-permissions.readthedocs.io/en/1.x/

Running tests

This packages uses tox to run tests on multiple evironments, please make sure they are passing before submitting a pull request. To run tests, install tox and run it in the command line from this project's folder:

$ tox

Maintainers

How to Release:

Pre release:

  • Include the changes in CHANGELOG
  • Update the version in rolepermissions/__init__.py
  • Update the classifiers in setup.py

Release:

Post release:

Help

If you have…

djangorestframework-api-key ⭐ 400+ 🍴 10+

GitHub logo florimondmanca / djangorestframework-api-key

🔐 API key permissions for Django REST Framework

Django REST Framework API Key

API key permissions for the Django REST Framework.

python versions django versions drf versions

Introduction

Django REST Framework API Key is a library for allowing server-side clients to safely use your API. These clients are typically third-party backends and services (i.e. machines) which do not have a user account but still need to interact with your API in a secure way.

Features

  • ✌️ Simple to use: create, view and revoke API keys via the admin site, or use built-in helpers to create API keys programmatically.
  • 🔒 As secure as possible: API keys are treated with the same level of care as user passwords. They are only visible at creation and hashed before storing in the database.
  • 🎨 Customizable: satisfy specific business requirements by building your own customized API key models, permission classes and admin panels.

Should I use API keys?

There are important security aspects you…

dry-rest-permissions ⭐ 300+ 🍴 10+

GitHub logo dbkaplan / dry-rest-permissions

Rules based permissions for the Django Rest Framework

dry-rest-permissions

Overview

Rules based permissions for the Django Rest Framework.

This framework is a perfect fit for apps that have many tables and relationships between them. It provides a framework that allows you to define, for each action or groups of actions, what users have permission for based on existing data in your database.

What does DRY Rest Permissions provide?

  1. A framework for defining global and object level permissions per action.
  2. Support for broadly defining permissions by grouping actions into safe and unsafe types.
  3. Support for defining only global (table level) permissions or only object (row level) permissions.
  4. Support for custom list and detail actions.
  5. A serializer field that will return permissions for an object to your client app. This is DRY and works with your existing permission definitions.
  6. A framework for limiting list requests based on permissions
  7. Support for custom list actions

Why is DRY Rest Permissions different than

django-authority ⭐ 200+ 🍴 10+

GitHub logo jazzband / django-authority

A Django app that provides generic per-object-permissions for Django's auth app and helpers to create custom permission checks.

django-authority

Jazzband GitHub Actions

This is a Django app for per-object-permissions that includes a bunch of helpers to create custom permission checks.

The main website for django-authority is django-authority.readthedocs.org. You can also install the in-development version of django-authority with pip install django-authority==dev or easy_install django-authority==dev.

Example

To get the example project running do:

  • Bootstrap the environment by running in a virtualenv:

    pip install Django
    pip install -e .
    
  • Sync the database:

    python example/manage.py migrate
    
  • Run the development server and visit the admin at http://127.0.0.1:8000/admin/:

    python example/manage.py runserver
    

Now create a flatage and open it to see some of the templatetags in action. Don't hesitate to use the admin to edit the permission objects.

Please use https://github.com/jazzband/django-authority/issues/ for issues and bug reports.

Documentation

The documenation is currently in development. You can create a nice looking html version using the setup.py:

python setup.py build_sphinx

Changelog:

0.15 (unreleased):

  • Moved CI to GitHub Actions.

👉 RESTful API.

🔝 Go To TOC

django-rest-framework ⭐ 24.1k+ 🍴 6.3k+

GitHub logo encode / django-rest-framework

Web APIs for Django. 🎸

build-status-image coverage-status-image pypi-version

Awesome web-browsable Web APIs.

Full documentation for the project is available at https://www.django-rest-framework.org/.


Funding

REST framework is a collaboratively funded project. If you use REST framework commercially we strongly encourage you to invest in its continued development by signing up for a paid plan.

The initial aim is to provide a single full-time position on REST framework Every single sign-up makes a significant impact towards making that possible.

Many thanks to all our wonderful sponsors, and in particular to our premium backers, Sentry, Stream, Spacinov, Retool, bit.io, PostHog, CryptAPI, FEZTO, Svix, and Zuplo.


Overview

Django REST framework is a powerful and flexible toolkit for building Web APIs.

Some reasons you might want to use REST framework:

  • The Web browsable API is a huge usability win for your developers.
  • Authentication policies including optional packages…

django-tastypie ⭐ 3.8k+ 🍴 1.2k+

GitHub logo django-tastypie / django-tastypie

Creating delicious APIs for Django apps since 2010.

django-tastypie

Docs CI Code Coverage Version Downloads

Creating delicious APIs for Django apps since 2010.

Currently in beta but being used actively in production on several sites.

Requirements

Core

  • Python 3.6+, preferably 3.8+ (Whatever is supported by your version of Django)
  • Django 4.2, 3.2 (LTS releases), or Django 4.0, 4.1, and 5.0 (intermediate releases)
  • dateutil (http://labix.org/python-dateutil) >= 2.1

Format Support

Optional

What's It Look Like?

A basic example looks like:

# myapp/api.py
# ============
from tastypie.resources import ModelResource
from myapp.models import Entry
class EntryResource(ModelResource):
    class Meta:
        queryset = Entry.objects.all()


# urls.py
# =======
from django.urls.conf import re_path, include
from tastypie.api import Api
from myapp.
Enter fullscreen mode Exit fullscreen mode

django-oscar-api ⭐ 300+ 🍴 100+

GitHub logo django-oscar / django-oscar-api

RESTful JSON API for django-oscar

Django Oscar API

This package provides a RESTful API for django-oscar.

https://travis-ci.org/django-oscar/django-oscar-api.svg?branch=master Coverage Documentation Status Latest PyPi release

Usage

To use the Oscar API application in an Oscar E-commerce site, follow these steps:

  1. Install the django-oscar-api package (pip install django-oscar-api).

  2. Add rest_framework and oscarapi to INSTALLED_APPS

    INSTALLED_APPS = [
     ...
     'rest_framework',
     'oscarapi',
    ]
    Enter fullscreen mode Exit fullscreen mode
  3. Add the application's urls to your urlconf

    from django.urls import include
    
    urlpatterns = (
        # all the things you already have
        path("api/", include("oscarapi.urls")),
    )
    Enter fullscreen mode Exit fullscreen mode
  4. Apply migrations:

    python manage.py migrate
    

See the Documentation for more information and the Changelog for release notes.




channels-api ⭐ 300+ 🍴 10+

GitHub logo linuxlewis / channels-api

RESTful Websocket APIs with Django Rest Framework and Channels

Channels API

https://travis-ci.org/linuxlewis/channels-api.svg?branch=master

Channels API exposes a RESTful Streaming API over WebSockets using channels. It provides a ResourceBinding which is comparable to Django Rest Framework's ModelViewSet. It is based on DRF serializer classes.

It requires Python 2.7 or 3.x, Channels <=1.1.8.1, Django <=1.11, and Django Rest Framework 3.x

You can learn more about channels-api from my talk at the SF Django Meetup or PyBay 2016

Table of Contents

How does it work?

The API builds on top of channels' WebsocketBinding class. It works by having the client send a stream and payload parameters. This allows us to route messages to different streams (or resources) for a particular action. So POST /user would have a message that looks like the following

var msg = {
  stream: "users",
  payload: {
    action: "create",
    data: {
      email: "test@example.com",
      password
Enter fullscreen mode Exit fullscreen mode

👉 Search.

🔝 Go To TOC

django-haystack ⭐ 3.3k+ 🍴 1.3k+

GitHub logo django-haystack / django-haystack

Modular search for Django

https://readthedocs.org/projects/django-haystack/badge/ https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336

Haystack

author: Daniel Lindsley
date: 2013/07/28

Haystack provides modular search for Django. It features a unified, familiar API that allows you to plug in different search backends (such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify your code.

Haystack is BSD licensed, plays nicely with third-party app without needing to modify the source and supports advanced features like faceting, More Like This, highlighting, spatial search and spelling suggestions.

You can find more information at http://haystacksearch.org/.

Getting Help

There is a mailing list (http://groups.google.com/group/django-haystack/) available for general discussion and an IRC channel (#haystack on irc.freenode.net).

Documentation

See the changelog

Requirements

Haystack has a relatively easily-met set of requirements.

  • Python 3.8+
  • Django 3-5

Additionally, each backend has its own requirements. You should refer to https://django-haystack.readthedocs.io/en/latest/installing_search_engines.html for more details.




djangoql ⭐ 700+ 🍴 10+

GitHub logo ivelum / djangoql

Advanced search language for Django

DjangoQL

Advanced search language for Django, with auto-completion. Supports logical operators, parenthesis, table joins, and works with any Django model. Tested on Python 2.7, 3.6 - 3.12, Django 1.8 - 5.0. The auto-completion feature has been tested in Chrome, Firefox, Safari, IE9+.

See a video: DjangoQL demo

https://raw.githubusercontent.com/ivelum/djangoql/master/djangoql/static/djangoql/img/completion_example_scaled.png

DjangoQL is used by:

logo1 logo2 logo3 logo4

Is your project using DjangoQL? Please submit a PR and let us know!

Contents

Installation

$ pip install djangoql
Enter fullscreen mode Exit fullscreen mode

Add 'djangoql' to INSTALLED_APPS in your settings.py:

INSTALLED_APPS = [
    ...
    'djangoql',
    ...
]
Enter fullscreen mode Exit fullscreen mode

Add it to your Django admin

Adding DjangoQLSearchMixin to your model admin will replace the standard Django search functionality with DjangoQL search. Example:

from django.
Enter fullscreen mode Exit fullscreen mode

django-watson ⭐ 1k+ 🍴 100+

GitHub logo etianen / django-watson

Full-text multi-table search application for Django. Easy to install and use, with good performance.

django-watson

Django CI PyPI GitHub license

django-watson is a fast multi-model full-text search plugin for Django.

It is easy to install and use, and provides high quality search results.

Features

  • Search across multiple models.
  • Order results by relevance.
  • No need to install additional third-party modules or services.
  • Fast and scaleable enough for most use cases.
  • Supports Django 2+, Python 3.6+.

Documentation

Please read the Getting Started guide for more information.

Download instructions, bug reporting and links to full documentation can be found at the main project website.

You can keep up to date with the latest announcements by joining the django-watson discussion group.

Contributing

Bug reports, bug fixes, and new features are always welcome. Please raise issues on the django-watson github repository, and submit pull requests for any new code.

You can run the test suite yourself from within a virtual environment with the following commands.

    pip install psycopg2 mysqlclient -e .

django-sphinx ⭐ 300+ 🍴 100+

GitHub logo dcramer / django-sphinx

A transparent layer for full-text search using Sphinx and Django

This project is no longer maintained

This is a layer that functions much like the Django ORM does except it works on top of the Sphinx (http://www.sphinxsearch.com) full-text search engine.

Please Note: You will need to create your own sphinx indexes and install sphinx on your server to use this app.

There will no longer be release packages available. Please use SVN to checkout the latest trunk version, as it should always be stable and current.

Installation

To install the latest stable version:

sudo easy_install django-sphinx

To install the latest development version (updated quite often):

git clone git://github.com/dcramer/django-sphinx.git
cd django-sphinx
sudo python setup.py install

Note: You will need to install the sphinxapi.py package into your Python Path or use one of the included versions. To use the included version, you must specify the following in your settings.py file:

# Sphinx 0.9.9
SPHINX_API_VERSION = 0x116
# Sphinx 0.9.8
SPHINX_API_VERSION

django-sphinx ⭐ 200+ 🍴 100+

GitHub logo willhardy / django-seo

Provides a set of tools for managing Search Engine Optimisation (SEO) for Django sites.

================
Django SEO tools
================

This is a set of SEO tools for Django.
It allows you to associate metadata with:

* absolute paths
* model instances
* model classes
* views

Metadata can be edited in the admin in a centralised place, but also alongside any associated models.

This is however a framework, not an app. You therefore have
complete control over the data you store. 
Here is an example of a definition::

    from rollyourown import seo

    class BasicMetadata(seo.Metadata):
        title          = seo.Tag(max_length=68, head=True)
        keywords       = seo.KeywordTag()
        description    = seo.MetaTag(max_length=155)
        heading        = seo.Tag(name="h1")
        subheading     = seo.Tag(name="h2")
        extra          = seo.Raw(head=True)
    
        # Adding some fields for facebook (opengraph)
        og_title       = seo.MetaTag(name="og:title", populate_from="title", verbose_name="facebook title")
        og_description = seo.MetaTag(name="og:description", populate_from="description", verbose_name='facebook description')

As you can see it is very flexible, but there is much more than this simple example.

The full documentation can be read online at http://django-seo.readthedocs.org/.



django-elasticsearch ⭐ 200+ 🍴 10+

GitHub logo liberation / django-elasticsearch

Simple wrapper around elasticsearch-py to index/search a django Model.

django_elasticsearch is a wrapper around py-elasticsearch that automates the indexation and search of django models.
Note: if your elasticsearch documents/mappings are not close to django models, this package is probably not for you.

INSTALL

  • Install and launch elasticsearch if it's not done already.

  • Install py-elasticsearch

    pip install elasticsearch
    Enter fullscreen mode Exit fullscreen mode
  • Install django_elasticsearch

    pip install git+https://github.com/liberation/django_elasticsearch.git
    Enter fullscreen mode Exit fullscreen mode

    Note: no pypy package yet

ELASTICSEARCH VERSION COMPATIBILITY

As stated in the python elasticsearch module documentation:

There are two branches for development - master and 0.4. Master branch is used to track all the changes for Elasticsearch 1.0 and beyond whereas 0.4 tracks Elasticsearch 0.90.

Releases with major version 1 (1.X.Y) are to be used with Elasticsearch 1.* and later, 0.4 releases are meant to work with Elasticsearch 0.90.*.

django_elasticsearch has only been tested with Elasticsearch 1.3.9 and it's corresponding python interface version 1.2.0, but since the API hasn't change i'm quite positive that newer…

django-cms-search ⭐ 10+ 🍴 10+

GitHub logo beniwohli / django-cms-search

This package provides multilingual search indexes for easy Haystack integration with django CMS

django-cms-search

Warning

This package is deprecated. Please use its successor, aldryn-search

This package provides multilingual search indexes for easy Haystack integration with django CMS.

Usage

After installing django-cms-search through your package manager of choice, add cms_search to your INSTALLED_APPS. That's it.

For setting up Haystack, please refer to their documentation.

For more docs, see the docs folder or the online documentation.

Warning

Since version 0.5, the HaystackSearchApphook is not registered automatically anymore. If you want do use the default app hook provided by django-cms-search, add this (e.g. in models.py):

from cms_search.cms_app import HaystackSearchApphook
apphook_pool.register(HaystackSearchApphook)



👉 Testing.

🔝 Go To TOC

django-jenkins ⭐ 900+ 🍴 200+

GitHub logo kmmbvnr / django-jenkins

Plug and play continuous integration with django and jenkins

django-jenkins

Plug and play continuous integration with Django and Jenkins

https://requires.io/github/kmmbvnr/django-jenkins/requirements.png?branch=master

Installation

From PyPI:

$ pip install django-jenkins

Or by downloading the source and running:

$ python setup.py install

Latest git version:

$ pip install -e git+git://github.com/kmmbvnr/django-jenkins.git#egg=django-jenkins
$ pip install coverage

Installation for Python 3:

Works out of the box

Usage

Add 'django_jenkins' to your INSTALLED_APPS list. Configure Jenkins to run the following command:

$ ./manage.py jenkins --enable-coverage

This will create reports/ directory with junit xml, Coverage and Pylint reports.

For more details see the generic tutorial: https://sites.google.com/site/kmmbvnr/home/django-jenkins-tutorial

Settings

  • PROJECT_APPS

    If present, it is supposed to be a list/tuple of django apps for Jenkins to run Tests, reports, and coverage are generated only for the apps from this list.

  • JENKINS_TASKS

    List of Jenkins reporters executed by ./manage.py jenkins command.

    Default value:

    JENKINS_TASKS = ()
    
  • JENKINS_TEST_RUNNER

    The name of the class to use for starting the test suite for jenkins command Class…

django-nose ⭐ 800+ 🍴 200+

GitHub logo jazzband / django-nose

Django test runner using nose

django-nose

The PyPI package GitHub Actions Coverage Jazzband

django-nose provides all the goodness of nose in your Django tests, like:

  • Testing just your apps by default, not all the standard ones that happen to be in INSTALLED_APPS
  • Running the tests in one or more specific modules (or apps, or classes, or folders, or just running a specific test)
  • Obviating the need to import all your tests into tests/__init__.py This not only saves busy-work but also eliminates the possibility of accidentally shadowing test classes.
  • Taking advantage of all the useful nose plugins

It also provides:

  • Fixture bundling, an optional feature which speeds up your fixture-based tests by a factor of 4
  • Reuse of previously created test DBs, cutting 10 seconds off startup time
  • Hygienic TransactionTestCases, which can save you a DB flush per test
  • Support for various databases. Tested with MySQL, PostgreSQL, and SQLite Others should work as well.

django-nose requires nose 1.2.1 or later, and the…

django-test-plus ⭐ 500+ 🍴 10+

GitHub logo revsys / django-test-plus

Useful additions to Django's default TestCase

django-test-plus

Useful additions to Django's default TestCase from REVSYS

pypi build matrix demo

Rationale

Let's face it, writing tests isn't always fun. Part of the reason for that is all of the boilerplate you end up writing. django-test-plus is an attempt to cut down on some of that when writing Django tests. We guarantee it will increase the time before you get carpal tunnel by at least 3 weeks!

If you would like to get started testing your Django apps or improve how your team is testing we offer TestStart to help your team dramatically improve your productivity.

Support

Supports: Python 3.8, 3.9, 3.10, 3.11, and 3.12.

Supports Django Versions: 3.2, 4.2, 5.0, and 5.1.

Documentation

Full documentation is available at http://django-test-plus.readthedocs.org

Installation

$ pip install django-test-plus
Enter fullscreen mode Exit fullscreen mode

Usage

To use django-test-plus, have your tests inherit from test_plus.test.TestCase rather than the normal django.test.TestCase::

from test_plus.test import TestCase

class MyViewTests(TestCase):
    ...
Enter fullscreen mode Exit fullscreen mode

django-autofixture ⭐ 400+ 🍴 100+

GitHub logo gregmuellegger / django-autofixture

Can create auto-generated test data.

django-autofixture

Build Status Package Version

This app aims to provide a simple way of loading masses of randomly generated test data into your development database. You can use a management command to load test data through command line.

It is named autofixture because it is based on django's fixtures. Without autofixture you add test data through the admin to see how the non-static pages on your site look. You export data by using dumpdata to send it to your colleagues or to preserve it before you make a manage.py reset app and so on. As your site grows in complexity the process of adding and re-adding data becomes more and more annoying.

This is where autofixtures will help!

Requirements

  • We require and support Django 1.4 to 1.9

Installation

You must make the autofixture package available on your python path Either drop it into your project directory or install it from the python package index…

django-experiments ⭐ 300+ 🍴 10+

GitHub logo mixcloud / django-experiments

Django AB testing module

Django-Experiments

Django-Experiments is an AB Testing Framework for Django.

It is possible to set up an experiment through template tags only Through the Django admin you can monitor and control experiment progress.

If you don't know what AB testing is, check out wikipedia.

Installation

Django-Experiments is best installed via pip:

pip install django-experiments
Enter fullscreen mode Exit fullscreen mode

This should download django-experiments and any dependencies. If downloading from the repo, pip is still the recommended way to install dependencies:

pip install -e .
Enter fullscreen mode Exit fullscreen mode

Dependencies

(Detailed list in setup.py)

It also requires 'django.contrib.humanize' to be in INSTALLED_APPS.

Usage

The example project is a good place to get started and have a play. Results are stored in redis and displayed in the Django admin. The key components of this framework are: the experiments, alternatives and goals.

Configuration

Before you can start configuring django-experiments, you must ensure you have a redis server up and…

django-test-utils ⭐ 300+ 🍴 10+

GitHub logo ericholscher / django-test-utils

Utilities for testing Django applications

Welcome to django-test-utils. The Documentation for this project is located at https://django-test-utils.readthedocs.org/en/latest/

The tests are run on every commit on Devmason: http://devmason.com/pony_server/django-test-utils

The mailing list is located on google groups: http://groups.google.com/group/django-testing

Thanks for using test utils!



Conclusion

🔝 Go To TOC

I hope that this list will be helpful to all those who are interested in learning more about Django and its best libraries and tools.

Top comments (9)

Collapse
 
thumbone profile image
Bernd Wechner

While I have bookmarked this for later review it is worth noting that it looks like little more than an aggregated list of a github search result. It is full of deprecated packages and has no commentary or appraisal for most of them and the pypi page would be far more useful for the bulk of them too ... Just saying.

Collapse
 
wiseai profile image
Mahmoud Harmouch

It is undoubtedly a good point that the list is a bit exhausting. However, there are reasons for mentioning some outdated resources. By shedding light on projects that can be worked on and updated to Django 4.0, we can support small contributors by highlighting their valuable contributions to our world. In this way, we can all work together to make things better for everyone. Moreover, for ease of navigation, notice the Go To Toc hyperlinks. Anyways, thanks for mentionning that!

Collapse
 
srbssv profile image
srbssv

Thank you! Lots of useful stuff.

Collapse
 
wiseai profile image
Mahmoud Harmouch

My pleasure!

Collapse
 
elmeniwy profile image
Mahmoud Nasser Abdulhamed

Wow it was really good

Collapse
 
wiseai profile image
Mahmoud Harmouch

Thanks for the feedback. Much appreciated!

Collapse
 
devangtomar profile image
Devang Tomar

That was a nice read! Liked, bookmarked and followed, keep the good work! 🙌

Collapse
 
rob212 profile image
Rob McBryde

Thanks for sharing some great learnings for me here

Collapse
 
786raees profile image
Waqar Khan

thank you so much for sharing you knowledge with us