1.3-beta-1.txt 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. ================================
  2. Django 1.3 beta 1 release notes
  3. ================================
  4. Welcome to Django 1.3 beta 1!
  5. This is the second in a series of preview/development releases leading
  6. up to the eventual release of Django 1.3. This release is primarily
  7. targeted at developers who are interested in trying out new features
  8. and testing the Django codebase to help identify and resolve bugs
  9. prior to the final 1.3 release.
  10. As such, this release is *not* intended for production use, and any such use
  11. is discouraged.
  12. What's new in Django 1.3 beta 1
  13. ===============================
  14. Further tweaks to the staticfiles app
  15. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  16. Django 1.3 ships with a new contrib app :mod:`django.contrib.staticfiles`
  17. to help developers handle the static media files (images, CSS, JavaScript,
  18. etc.) that are needed to render a complete web page.
  19. The :mod:`~django.contrib.staticfiles` app ships with the ability to
  20. automatically serve static files during development (if the :setting:`DEBUG`
  21. setting is ``True``) when using the :djadmin:`runserver` management command.
  22. Based on feedback from the community this release adds two new options to the
  23. :djadmin:`runserver` command to modify this behavior:
  24. * ``--nostatic``: prevents the :djadmin:`runserver` command from serving
  25. files completely.
  26. * ``--insecure``: enables serving of static files even if running with
  27. :setting:`DEBUG` set to False. (This is **not** recommended!)
  28. See the :doc:`staticfiles reference documentation </ref/contrib/staticfiles>`
  29. for more details, or learn :doc:`how to manage static files
  30. </howto/static-files/index>`.
  31. Translation comments
  32. ~~~~~~~~~~~~~~~~~~~~
  33. If you would like to give translators hints about a translatable string, you
  34. can add a comment prefixed with the ``Translators`` keyword on the line
  35. preceding the string, e.g.::
  36. def my_view(request):
  37. # Translators: This message appears on the home page only
  38. output = ugettext("Welcome to my site.")
  39. The comment will appear in the resulting .po file and should also be
  40. displayed by most translation tools.
  41. For more information, see :ref:`translator-comments`.
  42. Permissions for inactive users
  43. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  44. If you provide a custom auth backend with ``supports_inactive_user`` set to
  45. ``True``, an inactive user model will check the backend for permissions.
  46. This is useful for further centralizing the permission handling. See the
  47. :doc:`authentication docs </topics/auth/index>` for more details.
  48. Backwards-incompatible changes in 1.3 alpha 2
  49. =============================================
  50. Change to admin lookup filters
  51. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52. The Django admin has long had an undocumented "feature" allowing savvy
  53. users to manipulate the query string of changelist pages to filter the
  54. list of objects displayed. However, this also creates a security
  55. issue, as a staff user with sufficient knowledge of model structure
  56. could use this "feature" to gain access to information not normally accessible.
  57. As a result, changelist filtering now explicitly validates all lookup
  58. arguments in the query string, and permits only fields which are
  59. directly on the model, or relations explicitly permitted by the
  60. ``ModelAdmin`` definition. If you were relying on this undocumented
  61. feature, you will need to update your ``ModelAdmin`` definitions to
  62. whitelist the relations you choose to expose for filtering.
  63. Introduction of STATIC_URL and STATIC_ROOT settings
  64. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  65. The newly introduced :mod:`~django.contrib.staticfiles` app -- which extends
  66. Django's abilities to handle static files for apps and projects -- required the
  67. addition of two new settings to refer to those files in templates and code,
  68. especially in contrast to the :setting:`MEDIA_URL` and :setting:`MEDIA_ROOT`
  69. settings that refer to user-uploaded files.
  70. Prior to 1.3 alpha 2 these settings were called ``STATICFILES_URL`` and
  71. ``STATICFILES_ROOT`` to follow the naming scheme for app-centric settings.
  72. Based on feedback from the community it became apparent that those settings
  73. created confusion, especially given the fact that handling static files is also
  74. desired outside the use of the optional :mod:`~django.contrib.staticfiles` app.
  75. As a result, we took the following steps to rectify the issue:
  76. * Two new global settings were added that will be used by, **but are not
  77. limited to**, the :doc:`staticfiles</ref/contrib/staticfiles>` app:
  78. * :setting:`STATIC_ROOT` (formally ``STATICFILES_ROOT``)
  79. * :setting:`STATIC_URL` (formally ``STATICFILES_URL``)
  80. * The ``django.contrib.staticfiles.templatetags.staticfiles.get_staticfiles_prefix``
  81. template tag was moved to Django's core (``django.templatetags.static``) and
  82. renamed to :ttag:`get_static_prefix`.
  83. * The ``django.contrib.staticfiles.context_processors.staticfiles``
  84. context processor was moved to Django's core
  85. (``django.core.context_processors.static``) and renamed to
  86. :func:`~django.core.context_processors.static`.
  87. * :ref:`form-asset-paths` now uses :setting:`STATIC_URL` as the prefix
  88. **if the value is not None**, and falls back to the previously used
  89. :setting:`MEDIA_URL` setting otherwise.
  90. Changes to the login methods of the admin
  91. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  92. In previous version the admin app defined login methods in multiple locations
  93. and ignored the almost identical implementation in the already used auth app.
  94. A side effect of this duplication was the missing adoption of the changes made
  95. in r12634_ to support a broader set of characters for usernames.
  96. This release refactors the admin's login mechanism to use a subclass of the
  97. :class:`~django.contrib.auth.forms.AuthenticationForm` instead of a manual
  98. form validation. The previously undocumented method
  99. ``'django.contrib.admin.sites.AdminSite.display_login_form'`` has been removed
  100. in favor of a new :attr:`~django.contrib.admin.AdminSite.login_form`
  101. attribute.
  102. .. _r12634: https://code.djangoproject.com/changeset/12634
  103. Changes to ``USStateField``
  104. ===========================
  105. The ``django.contrib.localflavor`` application contains collections
  106. of code relevant to specific countries or cultures. One such is
  107. ``USStateField``, which provides a field for storing the two-letter postal
  108. abbreviation of a U.S. state. This field has consistently caused problems,
  109. however, because it is often used to store the state portion of a U.S postal
  110. address, but not all "states" recognized by the U.S Postal Service are
  111. actually states of the U.S. or even U.S. territory. Several
  112. compromises over the list of choices resulted in some users feeling
  113. the field supported too many locations, while others felt it supported
  114. too few.
  115. In Django 1.3 we're taking a new approach to this problem, implemented
  116. as a pair of changes:
  117. * The choice list for ``USStateField`` has changed. Previously, it
  118. consisted of the 50 U.S. states, the District of Columbia and
  119. U.S. overseas territories. As of Django 1.3 it includes all previous
  120. choices, plus the U.S. Armed Forces postal codes.
  121. * A new model field,
  122. ``django.contrib.localflavor.us.models.USPostalCodeField``, has
  123. been added which draws its choices from a list of all postal
  124. abbreviations recognized by the U.S Postal Service. This includes
  125. all abbreviations recognized by ``USStateField``, plus three
  126. independent nations -- the Federated States of Micronesia, the
  127. Republic of the Marshall Islands and the Republic of Palau -- which
  128. are serviced under treaty by the U.S. postal system. A new form
  129. widget, ``django.contrib.localflavor.us.forms.USPSSelect``, is
  130. also available and provides the same set of choices.
  131. Additionally, several finer-grained choice tuples are provided which
  132. allow mixing and matching of subsets of the U.S. states and
  133. territories, and other locations serviced by the U.S. postal
  134. system. Consult the ``django.contrib.localflavor`` documentation
  135. for more details.
  136. The change to ``USStateField`` is technically backwards-incompatible for
  137. users who expect this field to exclude Armed Forces locations. If you
  138. need to support U.S. mailing addresses without Armed Forces locations,
  139. see the list of choice tuples available in the localflavor
  140. documentation.
  141. The Django 1.3 roadmap
  142. ======================
  143. Before the final Django 1.3 release, several other preview/development
  144. releases will be made available. The current schedule consists of at
  145. least the following:
  146. * Week of **January 24, 2011**: First Django 1.3 release
  147. candidate. String freeze for translations.
  148. * Week of **January 31, 2011**: Django 1.3 final release.
  149. If necessary, additional beta or release-candidate packages
  150. will be issued prior to the final 1.3 release. Django 1.3 will be
  151. released approximately one week after the final release candidate.
  152. What you can do to help
  153. =======================
  154. In order to provide a high-quality 1.3 release, we need your help. Although this
  155. beta release is, again, *not* intended for production use, you can help the
  156. Django team by trying out the beta codebase in a safe test environment and
  157. reporting any bugs or issues you encounter. The Django ticket tracker is the
  158. central place to search for open issues:
  159. * https://code.djangoproject.com/timeline
  160. Please open new tickets if no existing ticket corresponds to a problem you're
  161. running into.
  162. Additionally, discussion of Django development, including progress toward the
  163. 1.3 release, takes place daily on the django-developers mailing list:
  164. * http://groups.google.com/group/django-developers
  165. ... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're
  166. interested in helping out with Django's development, feel free to join the
  167. discussions there.
  168. Django's online documentation also includes pointers on how to contribute to
  169. Django:
  170. * :doc:`How to contribute to Django </internals/contributing/index>`
  171. Contributions on any level -- developing code, writing documentation or simply
  172. triaging tickets and helping to test proposed bugfixes -- are always welcome and
  173. appreciated.