|
Posted
8 months
ago
by
Emma Delescolle
Django is experimenting with a new GitHub repository specifically designed to manage feature ideas and their progression. This is a significant shift away from the previous process of posting those to the forum.
Introducing the Django Features
... [More]
Repository
The Django Steering Council has launched a new GitHub repository, django/new-features dedicated to managing feature requests and ideas. This repository works in conjunction with a GitHub project to provide more efficient tracking of feature ideas as they move through various stages of consideration.
Why This Matters for Django Developers
This new approach aims to addresses several challenges the Django community has faced with feature requests:
Community involvement: Clear guidelines on how to participate in feature discussions
Structured workflow: A defined path from idea to implementation
Better resource allocation: Prioritization based on community support and feasibility
The New Feature Process Flow
The process follows a workflow with several key decision points:
New Idea Submission: Community members submit feature ideas as GitHub issues
Community Support Phase: The community reacts with emojis and comments to express support or concerns
Evaluation for Core Inclusion: The Steering Council determines if the feature belongs in Django core or whether it is more appropriate as a 3rd party package
Implementation Planning: Through an expedited DEP (Django Enhancement Proposal) process
How to Participate
Have a Feature Idea?
If you have an idea for improving Django, the process starts by creating an issue in the new repository. Before submitting, review the new feature process documentation to understand what to expect.
Want to Help Shape Django's Future?
There are three key areas where community involvement is needed:
Community Support Assessment: Review open tickets and share your support using emoji reactions
👍 For features you would use
👎 For features that might cause problems
😕 For features you're indifferent about
🎉 For easy wins
Core Evaluation: Help determine whether features should exist in Django core or as third-party packages
Implementation Volunteering: Assist with implementing, reviewing implementations, and maintenance of approved features
Benefits for the Django Community
We believe this new process can help with:
Clearer communication: Understanding where a feature stands in the process
More efficient feature development: Resources directed to features with demonstrated community support
Better separation of concerns: Distinguishing between features that belong in core versus those better suited as third-party packages
Reduced friction: Expedited processes for smaller feature requests
Providing Feedback
If you have thoughts about the new process itself, we'd love to get feedback through the Django Forum.
Conclusion
The experimental new feature repository represents is one of several steps Django is taking in order to try and improve the contributor experience journey. By providing a structured, transparent process for feature requests, Django aims to better serve its community while maintaining the framework's quality and sustainability.
For developers interested in contributing to Django or proposing new features, this new system should provide clearer expectations while making it easier to locate and participate in the discussion around a specific feature.
Check out the repository at django/new-features to learn more and start participating in this new adventure. [Less]
|
|
Posted
8 months
ago
by
Adam Hill
One of Django’s most appreciated features is the built-in admin functionality. In fact, it was ranked as the most useful contrib app in the 2023 Django developer survey.
With a few lines of code, Django automatically generates an administrative
... [More]
interface to add, update, and edit objects in your database. While it's not meant to replace a full-featured frontend, the admin makes rapid prototyping possible and provides a lot of functionality out of the box.
However, the admin’s focus is not on a flashy user interface and some people have found it to be a little plain – some have even called it ugly! But fortunately, like all Django applications, the admin’s CSS and HTML templates can be overridden and tweaked. Here are a few projects which have done that, and are recently updated as of early 2025.
Chime in on the Django forum thread here with your favorite Django admin theme or if I missed any other options!
Note that these packages are listed in the order of the “easiest” integration to the hardest. However, the later libraries also tend to provide more features.
Dracula
A dark (and light) theme for the Django Admin based on the very popular Dracula which has themes for 400+ applications. This library is a quick win to give the admin a bit of pizazz without requiring much setup or changing the default admin functionality.
Dracula Homepage
Dracula Code
Django Daisy
Django Daisy is a responsive admin built with DaisyUI and TailwindCSS. Application icons can be added by utilizing Font Awesome. Very minimal (and completely optional!) configuration.
Django Daisy Documentation
Django Daisy Code
Django Daisy Demo (demo/demo)
django-jazzmin
A drop-in theme for the Django admin that utilises AdminLTE 3.2 & Bootstrap 5. All of the configuration is optional which means the installation is very straight-forward. However, it also includes the ability to create custom menus, convert all pop-ups to modals, and a slick UI customizer. django-jazzmin also includes a wide selection of built-in themes.
Django Jazzmin Documentation
Django Jazzmin Code
django-admin-kubi
Kubi applies a Bootstrap 5 facelift to the Django admin, but also adds Sass support for custom styling and Font Awesome icons. It includes a sidebar menu for easy navigation and support for some third-party packages, including django-modeltranslation, django-modeltrans, django-import-export, django-two-factor-auth, and django-colorfield.
Kubi Code
django-jet-reboot
Modern template for the Django admin interface with improved functionality. It provides the ability to create a custom dashboard and modules. Also includes user-selectable themes through the UI.
Django JET Reboot Documentation
Django JET Reboot Code
django-semantic-admin
A responsive Django admin theme based on Semantic UI. Includes JavaScript datepicker and timepicker components. Includes support for django_filter and django-import-export.
Django Semantic UI Documentation
Django Semantic UI Code
Django Semantic UI Demo (admin/semantic)
Simple UI
A modern theme based on vue + element-ui which comes with 28 different themes. The documentation is originally in Chinese, but there is a translation in English.
Simple UI Documentation
Simple UI Code
Grapelli
Grappelli is a grid-based alternative to the Django admin which provides a few nifty features such as a custom TinyMCE integration, customizable dashboard, and inline sortables which can be updated by drag and drop.
Grappelli Homepage
Grappelli Documentation
Grappelli Code
django-admin-interface
A modern responsive flat admin interface which comes with optional themes that can be installed for Bootstrap, Foundation, and U.S. Web Design Standards, and customizable by the admin itself. Other features include replacing admin pop-ups with modals, accordions in the navigation bar to collapse applications, sticky filters and buttons to prevent them from scrolling off the screen, and a language switcher. Also includes support for django-ckeditor, django-dynamic-raw-id, django-json-widget, django-modeltranslation, django-rangefilter, django-streamfield, django-tabbed-admin, and sorl-thumbnail.
Django Admin Interface Code
Unfold
Unfold transforms the Django admin and is built with TailwindCSS. It includes custom widgets, pages, and admin sites. Also provides a language selector, conditional fields, custom filters, tabs, and additional features for actions. There are a lot of available settings and it is extremely customizable.
Unfold Homepage
Unfold Code
[Less]
|
|
Posted
8 months
ago
by
Thibaud Colas & Jacob Kaplan-Moss
We’ll be at PyCon US 2025, and hope to see the Django community and all our Python friends there ❤️! We have been granted a community booth at the conference – come say hi in the Expo Hall during open hours. There may be Django stickers available to
... [More]
pick up!
Represent Django
For our Individual Members – if you’d like to help us showcase Django, we’re (🔒️ private members forum) looking for help staffing the booth! This is a great opportunity to give back to support our project – consider it!
David, Kátia and Paolo representing the Foundation at EuroPython 2024. Credit: Paolo Melchiorre (CC-BY-SA)
[Less]
|
|
Posted
8 months
ago
by
Thibaud Colas & Jacob Kaplan-Moss
We’ll be at PyCon US 2025, and hope to see the Django community and all our Python friends there ❤️! We have been granted a community booth at the conference – come say hi in the Expo Hall during open hours. There may be Django stickers available to
... [More]
pick up!
Represent Django
For our Individual Members – if you’d like to help us showcase Django, we’re looking for help staffing the booth (members-only forum)! This is a great opportunity to give back to support our project – consider it!
David, Kátia and Paolo representing the Foundation at EuroPython 2024. Credit: Paolo Melchiorre (CC-BY-SA)
[Less]
|
|
Posted
8 months
ago
by
Sage Abdullah
This is the blog version of a talk! If you prefer, watch the recording on YouTube:
Sage Abdullah - Run your tests against Django’s main! - Django London Meetup
Django is known for its stability. The framework makes a
... [More]
strong commitment to API stability and forwards-compatibility, ensuring that developers can rely on it for building long-term, maintainable projects. A key aspect of this commitment involves extensive testing and structured releases—an area where testing by Django users can significantly enhance Django’s reliability. Here’s a closer look at how this works, and how you can contribute 🤝.
How Django stays stable
Django's stability is upheld through rigorous testing. As of Django 5.2, there are more than 18,000 tests run against all officially supported database backends, Python versions, and operating systems. Additionally, Django follows a well-structured deprecation policy, ensuring that public APIs are deprecated over at least two feature releases before being removed.
The feature release schedule is systematic and structured:
Active development happens on the main branch.
A stable branch (for example stable/5.2.x) is forked when an alpha release is made.
After a month, the beta release follows, where only release-blocking bug fixes are allowed.
A month later, a release candidate (RC) is published, marking the translation string freeze.
If no critical bugs are found, the final release is published after a couple of weeks.
With this structured approach, Django ensures that releases are stable. However, bugs can and do occasionally slip through the cracks!
Catching issues early
The best time to catch issues is before they reach the final release. Ideally, potential bugs should be caught at the pull request stage, but keeping up with all changes is challenging. This is where the community can help—by running their tests with Django's main branch.
How you can help
You can set up your test suite to run with Django's main branch in your tests pipeline. Here's an example using GitHub Actions, a popular Continuous Integration platform:
test:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- python: "3.13"
django: "git+https://github.com/django/django.git@main#egg=Django"
experimental: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- run: pip install -r requirements.txt
- if: ${{ matrix.experimental }}
run: pip install "${{ matrix.django }}"
- run: python -Wd manage.py test
If you maintain a Django package, you likely already test with multiple Django versions. Adding the main branch ensures that your project stays ahead of potential breaking changes.
Why this helps you
Running tests with Django main allows you to detect when changes in Django break your project. Sometimes, this happens due to the removal of internal APIs (that were never intended for reuse outside Django 🙈). If your tests fail, you can identify which commit caused the issue and adjust your code accordingly.
For example, on the Wagtail CMS project, recently caught an issue when an internal class, SubqueryConstraint, was removed from Django. This wasn't a bug in Django—it was the removal of an internal workaround that was no longer needed. If your project relies on internal APIs, testing against main is crucial to avoid surprises.
Why this helps Django
Testing with main doesn't just help your project—it helps Django too. Sometimes, your tests may fail due to legitimate regressions in Django that its test suite doesn't cover. Reporting these issues ensures they get fixed before the next release.
For example, just two days before Django 5.2 alpha was released, Wagtail tests on main helped detect a bug where calling .full_clean() on a child model in a multi-table inheritance setup triggered an unintended database query. This regression was promptly fixed, ensuring a smoother release for all users.
Take action: test against Django's main and report issues
By running your tests against Django's main branch and reporting any issues you find, you contribute to a more stable framework for everyone. It's a small step that makes a big impact.
So, take a few minutes today to update your automated tests setup and help keep Django as reliable as ever! [Less]
|
|
Posted
8 months
ago
by
Sage Abdullah
This is the blog version of a talk! If you prefer, watch the recording on YouTube:
Sage Abdullah - Run your tests against Django’s main! - Django London Meetup
Django is known for its stability. The framework makes a
... [More]
strong commitment to API stability and forwards-compatibility, ensuring that developers can rely on it for building long-term, maintainable projects. A key aspect of this commitment involves extensive testing and structured releases—an area where testing by Django users can significantly enhance Django’s reliability. Here’s a closer look at how this works, and how you can contribute 🤝.
How Django stays stable
Django's stability is upheld through rigorous testing. As of Django 5.2, there are more than 18,000 tests run against all officially supported database backends, Python versions, and operating systems. Additionally, Django follows a well-structured deprecation policy, ensuring that public APIs are deprecated over at least two feature releases before being removed.
The feature release schedule is systematic and structured:
Active development happens on the main branch.
A stable branch (for example stable/5.2.x) is forked when an alpha release is made.
After a month, the beta release follows, where only release-blocking bug fixes are allowed.
A month later, a release candidate (RC) is published, marking the translation string freeze.
If no critical bugs are found, the final release is published after a couple of weeks.
With this structured approach, Django ensures that releases are stable. However, bugs can and do occasionally slip through the cracks!
Catching issues early
The best time to catch issues is before they reach the final release. Ideally, potential bugs should be caught at the pull request stage, but keeping up with all changes is challenging. This is where the community can help—by running their tests with Django's main branch.
How you can help
You can set up your test suite to run with Django's main branch in your tests pipeline. Here's an example using GitHub Actions, a popular Continuous Integration platform:
test:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
include:
- python: "3.13"
django: "git+https://github.com/django/django.git@main#egg=Django"
experimental: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- run: pip install -r requirements.txt
- if: ${{ matrix.experimental }}
run: pip install "${{ matrix.django }}"
- run: python -Wd manage.py test
If you maintain a Django package, you likely already test with multiple Django versions. Adding the main branch ensures that your project stays ahead of potential breaking changes.
Why this helps you
Running tests with Django main allows you to detect when changes in Django break your project. Sometimes, this happens due to the removal of internal APIs (that were never intended for reuse outside Django 🙈). If your tests fail, you can identify which commit caused the issue and adjust your code accordingly.
For example, on the Wagtail CMS project, recently caught an issue when an internal class, SubqueryConstraint, was removed from Django. This wasn't a bug in Django—it was the removal of an internal workaround that was no longer needed. If your project relies on internal APIs, testing against main is crucial to avoid surprises.
Why this helps Django
Testing with main doesn't just help your project—it helps Django too. Sometimes, your tests may fail due to legitimate regressions in Django that its test suite doesn't cover. Reporting these issues ensures they get fixed before the next release.
For example, just two days before Django 5.2 alpha was released, Wagtail tests on main helped detect a bug where calling .full_clean() on a child model in a multi-table inheritance setup triggered an unintended database query. This regression was promptly fixed, ensuring a smoother release for all users.
Take action: test against Django's main and report issues
By running your tests against Django's main branch and reporting any issues you find, you contribute to a more stable framework for everyone. It's a small step that makes a big impact.
So, take a few minutes today to update your automated tests setup and help keep Django as reliable as ever! [Less]
|
|
Posted
8 months
ago
by
Sarah Abderemane
For April 2025, we welcome Öykü Gümüş as our DSF member of the month! ⭐
Öykü Gümüş has been Django developer for many years. She has been DjangoCon Europe organizer in 2018 and Django Girls mentor in Istanbul for multiple years. She has been a DSF
... [More]
member since November 2019.
You can learn more about Öykü by visiting Öykü's GitHub Profile.
Let’s spend some time getting to know Öykü better!
Can you tell us a little about yourself (hobbies, education, etc)
Hi, I am Öykü, software engineer currently based in Germany.
I studied Computer Engineering in Istanbul, and during my university years, I realised I really enjoy being part of tech communities such as Django Girls, PyLadies and etc.. And I have been trying to play an active role in such groups ever since!
Apart from that, I like drawing, and currently trying to improve my illustration skills. In general, I enjoy learning new things. For example started learning cello after 25 years of age, and loving every minute of my attempts to play it.
I also love cycling and hiking. Germany is offering so much in those areas and I am always looking for a chance to get on the road.
How did you start using Django?
During my university studies, I started working as a part time developer and my first ever job was with Django. Loved how versatile it was!
What other framework do you know and if there is anything you would like to have in Django if you had magical powers?
Besides Django, I’ve used Flask, which gives you more control and is great for microservices, and FastAPI, which I really like for its async capabilities and performance.
If I had magical powers to add something to Django, I’d probably improve its async support to make it more seamless throughout the stack. Right now, you can work around it, but it’s not as smooth as in FastAPI, for example.
What projects are you working on now?
Lately, I’ve been diving into GraphQL—experimenting with Graphene in Django and playing around with Apollo Client on the frontend. It’s been interesting to compare it with traditional REST APIs and explore how it can streamline data fetching in more complex UIs.
Which Django libraries are your favorite (core or 3rd party)?
There are a few Django libraries I keep reaching for, both core and third-party.
Core-wise, I really appreciate how solid the django.contrib.admin is. It saves so much time in early development. Also, Django’s ORM and authentication system are very well designed—I rarely need to look elsewhere unless I’m doing something super custom.
For third-party libraries, a few that I really enjoy using: django-rest-framework django-allauth and graphene-django
What are the top three things in Django that you like?
The ORM, the "Batteries Included" policy and Django's amazing community ❤️
You have been mentor for DjangoGirls+ multiple times, how did you start to mentor? Do you have any recommendation for potential folks interested to mentor?
Oh yes, I met with Django Girls in Istanbul and immediately wanted to take part by mentoring and couldn't love it more! It has great atmosphere and provides such a supportive environment, that I can safely suggest everyone just at least try it once. It's amazing to see the direct impact you can make on people by simply being there. One thing anyone interested in mentoring should never forget is to always maintain an inclusive and safe space.
You were part of the DjangoCon Europe organization in 2018, what makes you volunteer for this event?
The kindness of the organisers of another conference actually. It was Europython 2017 folks, and they kindly provided me, student at the time, a financial aid to join the conference and it was my first tech conference ever! Loved it so much, that I thought I should pay it forward. 🙂
Is there anything else you'd like to say?
Thanks so much for the chat—really enjoyed it! I also just want to say how valuable communities like this are, especially for folks starting out or navigating their path. Having spaces where people can share, support, and learn from each other makes a huge difference.
Thank you for doing the interview, Öykü ! [Less]
|
|
Posted
8 months
ago
by
Sarah Abderemane
For April 2025, we welcome Öykü Gümüş as our DSF member of the month! ⭐
Öykü Gümüş has been Django developer for many years. She has been DjangoCon Europe organizer in 2018 and Django Girls mentor in Istanbul for multiple years. She has been a DSF
... [More]
member since November 2019.
You can learn more about Öykü by visiting Öykü's GitHub Profile.
Let’s spend some time getting to know Cory better!
Can you tell us a little about yourself (hobbies, education, etc)
Hi, I am Öykü, software engineer currently based in Germany.
I studied Computer Engineering in Istanbul, and during my university years, I realised I really enjoy being part of tech communities such as Django Girls, PyLadies and etc.. And I have been trying to play an active role in such groups ever since!
Apart from that, I like drawing, and currently trying to improve my illustration skills. In general, I enjoy learning new things. For example started learning cello after 25 years of age, and loving every minute of my attempts to play it.
I also love cycling and hiking. Germany is offering so much in those areas and I am always looking for a chance to get on the road.
How did you start using Django?
During my university studies, I started working as a part time developer and my first ever job was with Django. Loved how versatile it was!
What other framework do you know and if there is anything you would like to have in Django if you had magical powers?
Besides Django, I’ve used Flask, which gives you more control and is great for microservices, and FastAPI, which I really like for its async capabilities and performance.
If I had magical powers to add something to Django, I’d probably improve its async support to make it more seamless throughout the stack. Right now, you can work around it, but it’s not as smooth as in FastAPI, for example.
What projects are you working on now?
Lately, I’ve been diving into GraphQL—experimenting with Graphene in Django and playing around with Apollo Client on the frontend. It’s been interesting to compare it with traditional REST APIs and explore how it can streamline data fetching in more complex UIs.
Which Django libraries are your favorite (core or 3rd party)?
There are a few Django libraries I keep reaching for, both core and third-party.
Core-wise, I really appreciate how solid the django.contrib.admin is. It saves so much time in early development. Also, Django’s ORM and authentication system are very well designed—I rarely need to look elsewhere unless I’m doing something super custom.
For third-party libraries, a few that I really enjoy using: django-rest-framework django-allauth and graphene-django
What are the top three things in Django that you like?
The ORM, the "Batteries Included" policy and Django's amazing community ❤️
You have been mentor for DjangoGirls+ multiple times, how did you start to mentor? Do you have any recommendation for potential folks interested to mentor?
Oh yes, I met with Django Girls in Istanbul and immediately wanted to take part by mentoring and couldn't love it more! It has great atmosphere and provides such a supportive environment, that I can safely suggest everyone just at least try it once. It's amazing to see the direct impact you can make on people by simply being there. One thing anyone interested in mentoring should never forget is to always maintain an inclusive and safe space.
You were part of the DjangoCon Europe organization in 2018, what makes you volunteer for this event?
The kindness of the organisers of another conference actually. It was Europython 2017 folks, and they kindly provided me, student at the time, a financial aid to join the conference and it was my first tech conference ever! Loved it so much, that I thought I should pay it forward. 🙂
Is there anything else you'd like to say?
Thanks so much for the chat—really enjoyed it! I also just want to say how valuable communities like this are, especially for folks starting out or navigating their path. Having spaces where people can share, support, and learn from each other makes a huge difference.
Thank you for doing the interview, Öykü ! [Less]
|
|
Posted
8 months
ago
by
Thibaud Colas
We’re organizing an annual meeting for members of the Django Software Foundation! It will be held at DjangoCon Europe 2025 in two weeks in Dublin, bright and early on the second day of the conference. The meeting will be held in person at the venue
... [More]
, and participants can also join remotely.
Register to join the annual meeting
What to expect
This is an opportunity for current and aspiring members of the Foundation to directly contribute to discussions about our direction. We will cover our current and future projects, and look for feedback and possible contributions within our community.
If this sounds interesting to you but you’re not currently an Individual Member, do review our membership criteria and apply!
[Less]
|
|
Posted
8 months
ago
by
Thibaud Colas
We’re organizing an annual meeting for members of the Django Software Foundation! It will be held at DjangoCon Europe 2025 in two weeks in Dublin, bright and early on the second day of the conference. The meeting will be held in person at the venue
... [More]
, and participants can also join remotely.
Register to join the annual meeting
What to expect
This is an opportunity for current and aspiring members of the Foundation to directly contribute to discussions about our direction. We will cover our current and future projects, and look for feedback and possible contributions within our community.
If this sounds interesting to you but you’re not currently an Individual Member, do review our membership criteria and apply! [Less]
|