Skip to content


Repository files navigation


pypi CICodecov Downloads

A flake8 plugin to detect bad practices on Django projects.


Install from pip with:

$ pip install flake8-django


flake8-django uses pytest for tests. To run them use:

$ pytest

Run coverage report using:

$ pytest --cov=.

List of Rules

Rule Description
DJ01 Avoid using null=True on string-based fields such as CharField and TextField
DJ03 Avoid passing locals() as context to a render function
DJ06 Do not use exclude with ModelForm, use fields instead
DJ07 Do not use __all__ with ModelForm, use fields instead
DJ08 Model does not define __str__ method
DJ12 Order of Model's inner classes, methods, and fields does not follow the Django Style Guide
DJ13 @receiver decorator must be on top of all the other decorators

More details about each of the Rules can be found on the wiki page.

Optional Rules - Disabled by Default

Rule Description
DJ10 Model should define verbose_name on its Meta inner class
DJ11 Model should define verbose_name_plural on its Meta inner class

To enable optional rules you can use the --select parameter. It's default values are: E,F,W,C90.

For example, if you wanted to enable DJ10, you could call flake8 in the following way:

flake8 --select=E,F,W,C90,DJ,DJ10

You could also add it to your configuration file:

max-line-length = 120
select = C,E,F,W,DJ,DJ10




@stummjr for teaching me AST, and what I could do with it. His blog is cool.