Coding Style

General

Please follow these conventions while remaining sensible:

Code Like a Pythonista is recommended reading.

flake8 and isort are used to enforce basic coding standards. To run these checks, use:

$ make lint

URLs

  • List pages should use plurals; e.g. /products/, /notifications/
  • Detail pages should simply be a PK/slug on top of the list page; e.g. /products/the-bible/, /notifications/1/
  • Create pages should have ‘create’ as the final path segment; e.g. /dashboard/notifications/create/
  • URL names use dashes not underscores.
  • Update pages are sometimes the same as detail pages (i.e., when in the dashboard). In those cases, just use the detail convention, eg /dashboard/notifications/3/. If there is a distinction between the detail page and the update page, use /dashboard/notifications/3/update/.
  • Delete pages; e.g., /dashboard/notifications/3/delete/

View class names

Classes should be named according to:

'%s%sView' % (class_name, verb)

For example, ProductUpdateView, OfferCreateView and PromotionDeleteView. This doesn’t fit all situations, but it’s a good basis.

Referencing managers

Use _default_manager rather than objects. This allows projects to override the default manager to provide domain-specific behaviour.

HTML

Please indent with four spaces.