{"title":"Django version 0.95 release notes","version":"dev","locale":"en","docname":"releases/0.95","url":"/en/dev/releases/0.95/","canonical":"https://djangodocs.dev/en/dev/releases/0.95/","summary":"Welcome to the Django 0.95 release. This represents a significant advance in Django development since the 0.91 release in January 2006.","html":"<h1>Django version 0.95 release notes<a class=\"heading-anchor\" href=\"#django-version-0-95-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Welcome to the Django 0.95 release.</p>\n<p>This represents a significant advance in Django development since the 0.91\nrelease in January 2006. The details of every change in this release would be\ntoo extensive to list in full, but a summary is presented below.</p>\n<section id=\"suitability-and-api-stability\">\n<h2>Suitability and API stability<a class=\"heading-anchor\" href=\"#suitability-and-api-stability\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>This release is intended to provide a stable reference point for developers\nwanting to work on production-level applications that use Django.</p>\n<p>However, it’s not the 1.0 release, and we’ll be introducing further changes\nbefore 1.0. For a clear look at which areas of the framework will change (and\nwhich ones will <em>not</em> change) before 1.0, see the <code class=\"docutils literal notranslate\">api-stability.txt</code> file,\nwhich lives in the docs/ directory of the distribution.</p>\n<p>You may have a need to use some of the features that are marked as\n“subject to API change” in that document, but that’s OK with us as long as it’s\nOK with you, and as long as you understand APIs may change in the future.</p>\n<p>Fortunately, most of Django’s core APIs won’t be changing before version 1.0.\nThere likely won’t be as big of a change between 0.95 and 1.0 versions as there\nwas between 0.91 and 0.95.</p>\n</section>\n<section id=\"changes-and-new-features\">\n<h2>Changes and new features<a class=\"heading-anchor\" href=\"#changes-and-new-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The major changes in this release (for developers currently using the 0.91\nrelease) are a result of merging the ‘magic-removal’ branch of development.\nThis branch removed a number of constraints in the way Django code had to be\nwritten that were a consequence of decisions made in the early days of Django,\nprior to its open-source release. It’s now possible to write more natural,\nPythonic code that works as expected, and there’s less “black magic” happening\nbehind the scenes.</p>\n<p>Aside from that, another main theme of this release is a dramatic increase in\nusability. We’ve made countless improvements in error messages, documentation,\netc., to improve developers’ quality of life.</p>\n<p>The new features and changes introduced in 0.95 include:</p>\n<ul class=\"simple\">\n<li><p>Django now uses a more consistent and natural filtering interface for\nretrieving objects from the database.</p></li>\n<li><p>User-defined models, functions and constants now appear in the module\nnamespace they were defined in. (Previously everything was magically\ntransferred to the <code class=\"docutils literal notranslate\">django.models.*</code> namespace.)</p></li>\n<li><p>Some optional applications, such as the FlatPage, Sites and Redirects\napps, have been decoupled and moved into <code class=\"docutils literal notranslate\">django.contrib</code>. If you don’t\nwant to use these applications, you no longer have to install their\ndatabase tables.</p></li>\n<li><p>Django now has support for managing database transactions.</p></li>\n<li><p>We’ve added the ability to write custom authentication and authorization\nbackends for authenticating users against alternate systems, such as\nLDAP.</p></li>\n<li><p>We’ve made it easier to add custom table-level functions to models,\nthrough a new “Manager” API.</p></li>\n<li><p>It’s now possible to use Django without a database. This simply means\nthat the framework no longer requires you to have a working database set\nup just to serve dynamic pages. In other words, you can just use\nURLconfs/views on their own. Previously, the framework required that a\ndatabase be configured, regardless of whether you actually used it.</p></li>\n<li><p>It’s now more explicit and natural to override <code class=\"docutils literal notranslate\">save()</code> and <code class=\"docutils literal notranslate\">delete()</code>\nmethods on models, rather than needing to hook into the <code class=\"docutils literal notranslate\">pre_save()</code> and\n<code class=\"docutils literal notranslate\">post_save()</code> method hooks.</p></li>\n<li><p>Individual pieces of the framework now can be configured without\nrequiring the setting of an environment variable. This permits use of,\nfor example, the Django templating system inside other applications.</p></li>\n<li><p>More and more parts of the framework have been internationalized, as\nwe’ve expanded internationalization (i18n) support. The Django\ncodebase, including code and templates, has now been translated, at least\nin part, into 31 languages. From Arabic to Chinese to Hungarian to Welsh,\nit is now possible to use Django’s admin site in your native language.</p></li>\n</ul>\n<p>The number of changes required to port from 0.91-compatible code to the 0.95\ncode base are significant in some cases. However, they are, for the most part,\nreasonably routine and only need to be done once. A list of the necessary\nchanges is described in the <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/RemovingTheMagic\">Removing The Magic</a> wiki page. There is also an\neasy <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/MagicRemovalCheatSheet\">checklist</a> for reference when undertaking the porting operation.</p>\n</section>\n<section id=\"problem-reports-and-getting-help\">\n<h2>Problem reports and getting help<a class=\"heading-anchor\" href=\"#problem-reports-and-getting-help\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Need help resolving a problem with Django? The documentation in the\ndistribution is also available <a class=\"reference internal\" href=\"/en/dev/\"><span class=\"doc\">online</span></a> at the <a class=\"reference external\" href=\"https://www.djangoproject.com/\">Django website</a>.\nThe <a class=\"reference internal\" href=\"/en/dev/faq/\"><span class=\"doc\">FAQ</span></a> document is especially recommended, as it contains\na number of issues that come up time and again.</p>\n<p>For more personalized help, the <a class=\"reference external\" href=\"https://groups.google.com/g/django-users\">django-users</a> mailing list is a very active\nlist, with more than 2,000 subscribers who can help you solve any sort of\nDjango problem. We recommend you search the archives first, though, because\nmany common questions appear with some regularity, and any particular problem\nmay already have been answered.</p>\n<p>Finally, for those who prefer the more immediate feedback offered by IRC,\nthere’s a <code class=\"docutils literal notranslate\">#django</code> channel on <code class=\"docutils literal notranslate\">irc.libera.chat</code> that is regularly\npopulated by Django users and developers from around the world. Friendly people\nare usually available at any hour of the day – to help, or just to chat.</p>\n<p>Thanks for using Django!</p>\n<p>The Django Team\nJuly 2006</p>\n</section>","rootId":"django-version-0-95-release-notes","toc":[{"title":"Suitability and API stability","anchor":"suitability-and-api-stability","children":[]},{"title":"Changes and new features","anchor":"changes-and-new-features","children":[]},{"title":"Problem reports and getting help","anchor":"problem-reports-and-getting-help","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/0.96","title":"Django version 0.96 release notes","url":"/en/dev/releases/0.96/"},"next":{"docname":"releases/security","title":"Archive of security issues","url":"/en/dev/releases/security/"},"formats":{"html":"/en/dev/releases/0.95/","markdown":"/en/dev/releases/0.95.md","json":"/en/dev/releases/0.95.json"},"source":"https://github.com/django/django/blob/main/docs/releases/0.95.txt","official":"https://docs.djangoproject.com/en/dev/releases/0.95/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en"]}