============
Coding Style
============
General
-------
Please follow these conventions while remaining sensible:
* `PEP8 -- Style Guide for Python Code `_
* `PEP257 -- Docstring Conventions `_
* `Django Coding Style `_
`Code Like a Pythonista`_ is recommended reading.
.. _Code Like a Pythonista: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
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/``
* 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.