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.
- Authentication.
- CMS.
- Debugging Tools.
- E-commerce.
- Forms.
- Geolocation.
- Job Scheduler.
- ORM.
- Permissions.
- RESTful API.
- Search.
- Testing.
- Conclusion.
👉 Admin Panels.
xadmin ⭐ 4.7k+ 🍴 1.4k+
sshwsfc / xadmin
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.
Live Demo
- 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
Get Started
Install
Xadmin is best installed via PyPI. To install the latest version, run:
pip install xadmin
or Install from github source:
pip install git+git://github.com/sshwsfc/xadmin.git
Install from github source for Django 2.0:
pip install git+git://github.com/sshwsfc/xadmin.git@django2
Install Requires
- django >=1.9
- django-crispy-forms >=1.6.0 (For xadmin crispy forms)
- django-reversion ([OPTION] For object history and reversion feature, please select right version by your django, see changelog )
- django-formtools ([OPTION] For wizward form)
- xlwt ([OPTION] For export xls files)
- xlsxwriter…
django-jet ⭐ 3.3k+ 🍴 700+
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
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.
- Home page: http://jet.geex-arts.com/
- New Jet: Live Demo
- Live Demo: http://demo.jet.geex-arts.com/admin/
- Documentation: http://jet.readthedocs.org/
- libi.io http://libi.io/library/1683/django-jet
- PyPI: https://pypi.python.org/pypi/django-jet
- Support: support@jet.geex-arts.com
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+
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.
- Project home: http://djangosuit.com/
- Live demo v1: http://djangosuit.com/admin/
- Live demo v2.0 alpha 1: http://v2.djangosuit.com/admin/
License
- Django Suit is licensed under Creative Commons Attribution-NonCommercial 3.0 license.
- Licence and pricing: http://djangosuit.com/pricing/
Docs & Support
- Documentation v2: http://django-suit.readthedocs.org/en/v2/
- Documentation v1: http://django-suit.readthedocs.org/en/latest/
- Support: http://djangosuit.com/support/
- Follow on Twitter to get latest news
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:
Preview
alt: | Django Suit Preview :target: http://v2.djangosuit.com/admin/ |
---|
wooey ⭐ 1.8k+ 🍴 100+
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+
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.
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
Create a dashboard file with unlimited number of widgets…
django-admin-tools ⭐ 700+ 🍴 100+
django-admin-tools / django-admin-tools
Extends the Django Admin to include a extensible dashboard and navigation menu
django-admin-tools
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
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!
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+
jazzband / django-oauth-toolkit
OAuth2 goodies for the Djangonauts!
Django OAuth Toolkit
OAuth2 goodies for the Djangonauts!
- 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',
)
If you need an OAuth2…
django-rest-auth ⭐ 2.3k+ 🍴 600+
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)
Deprecated
Please use https://github.com/iMerica/dj-rest-auth as this project is no longer maintained. Thanks!
Welcome to django-rest-auth
Django-rest-auth provides a set of REST API endpoints for Authentication and Registration
Documentation
http://django-rest-auth.readthedocs.org/en/latest/
Source code
https://github.com/Tivix/django-rest-auth
Stack Overflow
djoser ⭐ 2.2k+ 🍴 400+
sunscrapers / djoser
REST implementation of Django authentication system.
djoser
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.
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
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
We use poetry as dependency management and packaging tool.
$ cd djoser
$ poetry install --all-extras
This will create…
authentik ⭐ 2.2k+ 🍴 100+
goauthentik / authentik
The authentication glue you need.
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
Development
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+
jazzband / django-two-factor-auth
Complete Two-Factor Authentication for Django providing the easiest integration into most Django projects.
Django Two-Factor Authentication
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+
iMerica / dj-rest-auth
Authentication for Django Rest Framework
Dj-Rest-Auth
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'
)
Add URL patterns
urlpatterns = [
path('dj-rest-auth/', include('dj_rest_auth.urls')),
]
(Optional) Use Http-Only cookies
REST_AUTH = {
'USE_JWT': True,
'JWT_AUTH_COOKIE': 'jwt-auth',
}
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+
authomatic / authomatic
Simple yet powerful authorization / authentication client library for Python web applications.
Authomatic
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+
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.
🔥 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:
pip install wagtail
wagtail start mysite
…django-cms ⭐ 8.9k+ 🍴 2.8k+
django-cms / django-cms
The easy-to-use and developer-friendly enterprise CMS powered by Django
django CMS
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+
django-cms / django-filer
File and Image Management Application for django
Django Filer
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.
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+
amfoss / cms
This project is outdated and replaced by root. Archived for historical reference. Club Management System of amFOSS, powered by CMS
CMS
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.
-
Make sure that you have
Python 3
,python-3-devel
,gcc
,virtualenv
, andpip
installed. -
Clone the repository
$ git clone https://github.com/amfoss/cms.git $ cd cms
-
Create a python 3 virtualenv, and activate the environment.
$ virtualenv -p python3 . $ source bin/activate
-
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+
batiste / django-page-cms
Official Django page CMS git repository
django-page-cms
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
Or with docker
docker compose up fast
# or if you want to build it yourself
docker compose up web
To create a super user account
docker compose run fast python example/manage.py createsuperuser
To create a demo website
docker compose run fast python example/manage.py pages_demo
To run tests with docker
docker compose run run-test
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.
Those placeholder can also be edited…
jbt_blog ⭐ 100+ 🍴 10+
Introduction
一个基于python3.6
和Django2.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
Backend page
Quick start
#创建虚拟环境
conda create -n blog python=3.6 -y
#激活虚拟环境
conda activate blog
#安装依赖包
pip install -r requirements.txt
#启动服务器
python manage.py runserver
浏览器访问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+
django-leonardo / django-leonardo
CMS for everyone, easy to deploy and scale, robust modular system with many packages. https://packages.leonardo-cms.org/
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:
- Leonardo Site
- Demo Site (a reference build of an Leonardo project)
- Demo Store (a reference build of an Leonardo Store project)
- Developer Documentation (documentation for Django Developers)
- User…
👉 Debugging Tools.
🔝 Go To TOC
django-debug-toolbar ⭐ 7.2k+ 🍴 900+
jazzband / django-debug-toolbar
A configurable set of panels that display various debug information about the current request/response.
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:
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+
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+
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
-
Install and configure Django Debug Toolbar
-
Install Django Debug Panel:
pip install django-debug-panel
-
Add
debug_panel
to yourINSTALLED_APPS
setting:INSTALLED_APPS = ( # ... 'debug_panel', )
-
Replace the Django Debug Toolbar middleware with the Django Debug Panel one. Replace:
MIDDLEWARE_CLASSES = ( ... 'debug_toolbar.middleware.DebugToolbarMiddleware', ... )
with:
MIDDLEWARE_CLASSES = ( ... 'debug_panel.middleware.DebugPanelMiddleware', ... )
-
(Optional) Configure your cache All the debug data of a request are stored into the cache backend
debug-panel
if available. Otherwise, thedefault
backend is used, and finally if no caches are defined it will fallback to a local memory cache. You might want to configure thedebug-panel
cache in yoursettings
:CACHES
…
django-debug-toolbar-template-timings ⭐ 200+ 🍴 10+
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'
]
Screenshot
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+
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+
playfire / django-debug-toolbar-user-panel
Panel for the Django Debug toolbar to quickly switch between users
django-debug-toolbar-user-panel
Documentation: http://code.playfire.com/django-debug-toolbar-user-panel/
👉 E-commerce.
🔝 Go To TOC
saleor ⭐ 16.8k+ 🍴 4.7k+
agiliq / merchant
A Django app to accept payments from various payment processors via Pluggable backends.
Django-Merchant
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:
django-oscar ⭐ 5.4k+ 🍴 2.0k+
django-oscar / django-oscar
Domain-driven e-commerce for Django
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:
Further reading:
- Official homepage
- Sandbox site (automatically deployed via the official docker sandbox image)
- Documentation on the excellent readthedocs.org
- Docker image on http://hub.docker.com/
- django-oscar group - mailing list for questions and announcements
- Twitter account for news and updates
- Discord
- PyPI page
- Transifex project - translating Oscar made easy
Continuous integration status:
PyPI status:
Docs status:
Core team:
- David Winterbottom (Twitter @codeinthehole)
- Maik…
django-shop ⭐ 2.9k+ 🍴 900k+
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.
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+
Shuup
Shuup is an Open Source E-Commerce Platform based on Django and Python.
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!
Docker quick start
Fastest way to…
eCommerce ⭐ 1.3k+ 🍴 700+
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
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
Section - Products Component
10 - Featured & Custom QuerySets
Section: Templates
merchant ⭐ 900+ 🍴 100k+
agiliq / merchant
A Django app to accept payments from various payment processors via Pluggable backends.
Django-Merchant
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:
django-lfs ⭐ 500+ 🍴 200+
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+
veryacademy / django-ecommerce-project
The Django-Ecommerce is an open-source project initiative and tutorial series built with Python and the Django Framework.
Django E-commerce Tutorial Series
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+
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
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+
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
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
andas_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+
zostera / django-bootstrap3
Bootstrap 3 integration with Django.
django-bootstrap3
Bootstrap 3 for Django.
Goal
The goal of this project is to seamlessly blend Django and Bootstrap 3.
- Want to use Bootstrap 4 in Django? See https://github.com/zostera/django-bootstrap4.
- Want to use Bootstrap 5 in Django? See https://github.com/zostera/django-bootstrap5.
- Need icons in your Django project? Use https://github.com/zostera/django-icons.
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
-
Install using pip:
pip install django-bootstrap3
Alternatively, you can install download or clone this repo and call
pip install -e .
. -
Add to
INSTALLED_APPS
in yoursettings.py
:INSTALLED_APPS = ( # ... "bootstrap3", # ... )
-
In your templates, load the
bootstrap3
library and use thebootstrap_*
tags:
Example template
{%
…django-smart-selects ⭐ 1k+ 🍴 300+
jazzband / django-smart-selects
chained and grouped selects for django forms
Django Smart Selects
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
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+
zostera / django-bootstrap4
Bootstrap 4 integration with Django.
django-bootstrap 4
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
- Install using pip:
pip install django-bootstrap4
Alternatively, you can install download or clone this repo and call pip install -e .
.
- Add to
INSTALLED_APPS
in yoursettings.py
:
INSTALLED_APPS = (
# ...
"bootstrap4",
# ...
)
- In your templates, load the
bootstrap4
library and use thebootstrap_*
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
…django-bootstrap-modal-forms ⭐ 300+ 🍴 100+
trco / django-bootstrap-modal-forms
A Django plugin for creating AJAX driven forms in Bootstrap modal.
Django Bootstrap Modal Forms
A Django plugin for creating AJAX driven forms in Bootstrap modal.
Table of Contents
Test and experiment on your machine
This repository includes Dockerfile
and docker-compose.yml
files so you can easily setup and start to experiment with django-bootstrap-modal-forms
running inside of a container on your local machine. Any changes you…
django-forms-builder ⭐ 600+ 🍴 200+
stephenmcd / django-forms-builder
Let users build forms in Django admin
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:
Data reporting:
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
Otherwise you can download django-forms-builder and install it directly from source:
$ python setup.py install
Once installed you can configure your project to use django-forms-builder with the following…
django-formtools ⭐ 500+ 🍴 100+
jazzband / django-formtools
A set of high-level abstractions for Django forms
django-formtools
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:
- Join the #django channel on irc.libera.chat. Lots of helpful people hang out there.
- Join the django-users mailing list, or read the archives, at https://groups.google.com/group/django-users.
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+
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()
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
…django-betterforms ⭐ 100+ 🍴 10+
django-bootstrap5 ⭐ 100+ 🍴 10+
zostera / django-bootstrap5
Bootstrap 5 for Django
django-bootstrap5
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
-
Install using pip:
pip install django-bootstrap5
-
Add to
INSTALLED_APPS
in yoursettings.py
:INSTALLED_APPS = ( # ... "django_bootstrap5", # ... )
-
In your templates, load the
django_bootstrap5
library and use thebootstrap_*
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>
django-form-fun ⭐ 100+ 🍴 200+
realpython / django-form-fun
model forms, ajax
Django and AJAX Form Submissions - say 'goodbye' to the page refresh
- check out the blog post: https://realpython.com/blog/python/django-and-ajax-form-submissions/
django-mongodbforms ⭐ 10+ 🍴 10+
jschrewe / django-mongodbforms
Django forms for mongodb documents
django mongodbforms
This is an implementation of django's model forms for mongoengine documents.
Requirements
- Django >= 1.4
- mongoengine >= 0.8.3
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+
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
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
-
pip install django-countries
For more accurate sorting of translated country names, install it with the optional pyuca package:
pip install django-countries[pyuca]
-
Add
django_countries
toINSTALLED_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+
oscarmcm / django-places
A django app for store places with autocomplete
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}'
Usage
Then use it in a project:
from django.db import models
from places.fields import PlacesField
class MyLocationModel(models.Model):
location = PlacesField()
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
…geodjango ⭐ 10+ 🍴 1+
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+
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",
...
}
Usage : As an IP Location library
import ipapi
ipapi.location(ip, key, output)
Argument | Description |
---|---|
ip |
IP Address (IPv4 or IPv6) that you wish to locate. If |
Django-with-Geolocation ⭐ 10+ 🍴 10+
django-ip-geolocation ⭐ 10+ 🍴 1+
rednaks / django-ip-geolocation
IP Geolocation Hooks for django
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
...
Middleware
First you need to add the middleware into your settings.py
.
MIDDLEWARE = [
...
'django_ip_geolocation.middleware.IpGeolocationMiddleware',
...
]
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
...
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+
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 installto 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+
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
add it to installed apps in django settings.py:
INSTALLED_APPS = (
'django_crontab',
...
)
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
now add this to your settings.py:
CRONJOBS = [
('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]
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']),
]
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
show…
django-rq-scheduler ⭐ 10+ 🍴 10+
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
-
In
settings.py
, adddjango_rq
andscheduler
toINSTALLED_APPS
:INSTALLED_APPS = [ ... 'django_rq', 'scheduler', ... ]
-
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
-
Sign into the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.
-
Click on the Add link for Scheduled Job.
-
Enter a…
django-future ⭐ 10+ 🍴 10+
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+
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
##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",
)
- 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',
)
-
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+
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
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+
GetStream / stream-django
Django Client - Build Activity Feeds & Streams with GetStream.io
Stream Django
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
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+
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.
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+
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
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
andfeeds
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+
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+
jazzband / django-model-utils
Django model mixins and utilities.
django-model-utils
Django model mixins and utilities.
django-model-utils
supports Django 3.2+.
This app is available on PyPI.
Getting Help
Documentation for django-model-utils is available https://django-model-utils.readthedocs.io/
Contributing
Please file bugs and send pull requests to the GitHub repository and issue tracker. See CONTRIBUTING.rst for details.
django-cacheops ⭐ 1.7k+ 🍴 200+
Suor / django-cacheops
A slick ORM cache with automatic granular event-driven invalidation.
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
Contents
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
Add cacheops
to your INSTALLED_APPS
…
django-money ⭐ 1.3k+ 🍴 200+
django-money / django-money
Money fields for Django forms and models.
django-money
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
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',
...
]
Model usage
Use as normal model fields:
django-modeltranslation ⭐ 1.1k+ 🍴 200+
deschler / django-modeltranslation
Translates Django models using a registration approach.
Modeltranslation
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+
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+
dancaron / Django-ORM
Django-ORM-Standalone Template - Use the power of Django's database functionality in regular python scripts.
Django ORM Standalone
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+
django-guardian / django-guardian
Per object permissions for Django
django-guardian
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.
- Put
guardian
into yourINSTALLED_APPS
at settings module:
INSTALLED_APPS = (
...
'guardian',
)
- Add extra authorization backend to your
settings.py
:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend', # default
'guardian.backends.ObjectPermissionBackend',
)
-
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.
…django-rules ⭐ 1.5k+ 🍴 100+
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.
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+
vintasoftware / django-role-permissions
A django app for role based permissions.
django-role-permissions
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:
- Run the github action release
Post release:
- Check if docs were updated at readthedocs.
Help
If you have…
djangorestframework-api-key ⭐ 400+ 🍴 10+
florimondmanca / djangorestframework-api-key
🔐 API key permissions for Django REST Framework
Django REST Framework API Key
API key permissions for the Django REST Framework.
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+
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?
- A framework for defining global and object level permissions per action.
- Support for broadly defining permissions by grouping actions into safe and unsafe types.
- Support for defining only global (table level) permissions or only object (row level) permissions.
- Support for custom list and detail actions.
- A serializer field that will return permissions for an object to your client app. This is DRY and works with your existing permission definitions.
- A framework for limiting list requests based on permissions
- Support for custom list actions
Why is DRY Rest Permissions different than
…django-authority ⭐ 200+ 🍴 10+
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
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+
encode / django-rest-framework
Web APIs for Django. 🎸
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+
django-tastypie / django-tastypie
Creating delicious APIs for Django apps since 2010.
django-tastypie
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
- XML: lxml 3 (http://lxml.de/) and defusedxml (https://pypi.python.org/pypi/defusedxml)
- YAML: pyyaml (http://pyyaml.org/)
- binary plist: biplist (https://bitbucket.org/wooster/biplist)
Optional
- HTTP Digest authentication: python3-digest (https://bitbucket.org/akoha/python-digest/)
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.
…django-oscar-api ⭐ 300+ 🍴 100+
django-oscar / django-oscar-api
RESTful JSON API for django-oscar
Django Oscar API
This package provides a RESTful API for django-oscar.
Usage
To use the Oscar API application in an Oscar E-commerce site, follow these steps:
-
Install the
django-oscar-api
package (pip install django-oscar-api
). -
Add
rest_framework
andoscarapi
toINSTALLED_APPS
INSTALLED_APPS = [ ... 'rest_framework', 'oscarapi', ]
-
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")), )
-
Apply migrations:
python manage.py migrate
See the Documentation for more information and the Changelog for release notes.
channels-api ⭐ 300+ 🍴 10+
linuxlewis / channels-api
RESTful Websocket APIs with Django Rest Framework and Channels
Channels API
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
…👉 Search.
🔝 Go To TOC
django-haystack ⭐ 3.3k+ 🍴 1.3k+
django-haystack / django-haystack
Modular search for Django
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
- Development version: http://docs.haystacksearch.org/
- v3.3.0: https://django-haystack.readthedocs.io/en/v3.3.0/
- v2.8.1: https://django-haystack.readthedocs.io/en/v2.8.1/
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+
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
DjangoQL is used by:
Is your project using DjangoQL? Please submit a PR and let us know!
Contents
- Installation
- Add it to your Django admin
- Using DjangoQL with the standard Django admin search
- Language reference
- DjangoQL Schema
- Custom search fields
- Can I use it outside of Django admin?
- Using completion widget outside of Django admin
Installation
$ pip install djangoql
Add 'djangoql'
to INSTALLED_APPS
in your settings.py
:
INSTALLED_APPS = [
...
'djangoql',
...
]
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.
…django-watson ⭐ 1k+ 🍴 100+
etianen / django-watson
Full-text multi-table search application for Django. Easy to install and use, with good performance.
django-watson
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+
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+
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+
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
-
Install django_elasticsearch
pip install git+https://github.com/liberation/django_elasticsearch.git
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+
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+
kmmbvnr / django-jenkins
Plug and play continuous integration with django and jenkins
django-jenkins
Plug and play continuous integration with Django and Jenkins
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+
jazzband / django-nose
Django test runner using nose
django-nose
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+
revsys / django-test-plus
Useful additions to Django's default TestCase
django-test-plus
Useful additions to Django's default TestCase from REVSYS
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
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):
...
…
django-autofixture ⭐ 400+ 🍴 100+
gregmuellegger / django-autofixture
Can create auto-generated test data.
django-autofixture
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+
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
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 .
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+
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)
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.
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!
Thank you! Lots of useful stuff.
My pleasure!
Wow it was really good
Thanks for the feedback. Much appreciated!
That was a nice read! Liked, bookmarked and followed, keep the good work! 🙌
Thanks for sharing some great learnings for me here
thank you so much for sharing you knowledge with us