- Language:en
Reporting bugs and requesting features¶
Important
Please report security issuesonly tosecurity@djangoproject.com. This is a private list only open tolong-time, highly trusted Django developers, and its archives arenot public. For further details, please seeour securitypolicies.
Reporting bugs¶
Before reporting a bug on theticket tracker consider these points:
Check that someone hasn’t already filed the bug report bysearching orrunningcustom queries in the ticket tracker.
Don’t use the ticket system to ask support questions. Use theDjango Forumor theDjango Discord server for that.
Don’t reopen issues that have been marked “wontfix” without finding consensusto do so on theDjango Forum.
Don’t use the ticket tracker for lengthy discussions, because they’relikely to get lost. If a particular ticket is controversial, please move thediscussion to theDjango Forum.
Well-written bug reports areincredibly helpful. However, there’s a certainamount of overhead involved in working with any bug tracking system so yourhelp in keeping our ticket tracker as useful as possible is appreciated. Inparticular:
Do read theFAQ to see if your issue mightbe a well-known question.
Do ask onDjango Forum or theDjango Discord serverfirst ifyou’re not sure if what you’re seeing is a bug.
Do write complete, reproducible, specific bug reports. You mustinclude a clear, concise description of the problem, and a set ofinstructions for replicating it. Add as much debug information as you can:code snippets, test cases, exception backtraces, screenshots, etc. A nicesmall test case is the best way to report a bug, as it gives us ahelpful way to confirm the bug quickly.
Don’t post toDjango Forum only to announce that you have filed abug report. All the tickets are mailed to another list,django-updates,which is tracked by developers and interested community members; we see themas they are filed.
To understand the lifecycle of your ticket once you have created it, refer toTriage workflow.
Reporting user interface bugs¶
If your bug impacts anything visual in nature, there are a few additionalguidelines to follow:
Include screenshots in your ticket which are the visual equivalent of aminimal test case. Show off the issue, not the crazy customizationsyou’ve made to your browser.
If the issue is difficult to show off using a still image, considercapturing abrief screencast. If your software permits it, capture onlythe relevant area of the screen.
If you’re offering a patch that changes the look or behavior of Django’sUI, youmust attach beforeand after screenshots/screencasts.Tickets lacking these are difficult for triagers to assess quickly.
Screenshots don’t absolve you of other good reporting practices. Make sureto include URLs, code snippets, and step-by-step instructions on how toreproduce the behavior visible in the screenshots.
Make sure to set the UI/UX flag on the ticket so interested parties canfind your ticket.
If the issue relates to accessibility, please link to the relevantaccessibility standard if applicable.
Requesting features¶
We’re always trying to make Django better, and your feature requests are a keypart of that. Here are some tips on how to make a request most effectively:
Evaluate whether the feature idea requires changes in Django’s core. If youridea can be developed as an independent application or module — forinstance, you want to support another database engine — we’ll probablysuggest that you develop it independently. Then, if your project gatherssufficient community support, we may consider it for inclusion in Django.
Propose the feature in thenew feature ideas GitHub project (not in theticket tracker) by creating a new item in theIdea column. This is wherethe community and theSteering Council evaluate newideas for the Django ecosystem. This step is especially important for largeor complex proposals. We prefer to discuss any significant changes toDjango’s core before any development begins. In some cases, a feature may bebetter suited as a third-party package, where it can evolve independently ofDjango’s release cycle.
Describe clearly and concisely what the missing feature is and how you’dlike to see it implemented. Include example code (non-functional is OK)if possible.
Explainwhy you’d like the feature. Explaining a minimal use case will helpothers understand where it fits in, and if there are already other ways ofachieving the same thing.
See also:Documenting new features.
Requesting performance optimizations¶
Reports of a performance regression, or suggested performance optimizations,should provide benchmarks and commands for the ticket triager to reproduce.
See thedjango-asv benchmarks for more details of Django’s existingbenchmarks.
How we make decisions¶
Whenever possible, we aim for rough consensus. Emoji reactions are used onissues within thenew feature ideas GitHub project to track communityfeedback. The following meanings are assigned to each reaction:
👍: I support this feature and would use it
👎: I oppose this feature or believe it would cause issues for me or Django
😕: I have no strong opinion on this feature
🎉: This feature seems like a straightforward and beneficial addition
TheSteering Council will regularly review the ideasin the project, moving those with community support through the followingstages:
Idea
Approved - Idea refinement - Team creation
In progress
Working solution - Review - Feedback
Needs maintainer (Django only)
Done
Occasionally, discussions on feature ideas or the direction of Django may takeplace on the Django Forum. These discussions may include informal votes, whichfollow the voting style invented by Apache and used on Python itself, wherevotes are given as +1, +0, -0, or -1.Roughly translated, these votes mean:
+1: “I love the idea and I’m strongly committed to it.”
+0: “Sounds OK to me.”
-0: “I’m not thrilled, but I won’t stand in the way.”
-1: “I strongly disagree and would be very unhappy to see the idea turninto reality.”
Although these votes are informal, they’ll be taken very seriously. After asuitable voting period, if an obvious consensus arises we’ll follow the votes.

