{"title":"Django 3.1.7 release notes","version":"dev","locale":"en","docname":"releases/3.1.7","url":"/en/dev/releases/3.1.7/","canonical":"https://djangodocs.dev/en/dev/releases/3.1.7/","summary":"Django 3.1.7 fixes a security issue and a bug in 3.1.6. Django contains a copy of urllib.parse.parse_qsl() which was added to backport some security fixes.","html":"<h1>Django 3.1.7 release notes<a class=\"heading-anchor\" href=\"#django-3-1-7-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>February 19, 2021</em></p>\n<p>Django 3.1.7 fixes a security issue and a bug in 3.1.6.</p>\n<section id=\"cve-2021-23336-web-cache-poisoning-via-django-utils-http-limited-parse-qsl\">\n<h2>CVE-2021-23336: Web cache poisoning via <code class=\"docutils literal notranslate\">django.utils.http.limited_parse_qsl()</code><a class=\"heading-anchor\" href=\"#cve-2021-23336-web-cache-poisoning-via-django-utils-http-limited-parse-qsl\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django contains a copy of <a class=\"reference external\" href=\"https://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qsl\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">urllib.parse.parse_qsl()</code></a> which was added to\nbackport some security fixes. A further security fix has been issued recently\nsuch that <code class=\"docutils literal notranslate\">parse_qsl()</code> no longer allows using <code class=\"docutils literal notranslate\">;</code> as a query parameter\nseparator by default. Django now includes this fix. See <a class=\"extlink-bpo reference external\" href=\"https://bugs.python.org/issue?&#64;action=redirect&amp;bpo=42967\">bpo-42967</a> for\nfurther details.</p>\n</section>\n<section id=\"bugfixes\">\n<h2>Bugfixes<a class=\"heading-anchor\" href=\"#bugfixes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>Fixed a regression in Django 3.1 that caused <code class=\"docutils literal notranslate\">RuntimeError</code> instead of\nconnection errors when using only the <code class=\"docutils literal notranslate\">'postgres'</code> database\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32403\">#32403</a>).</p></li>\n</ul>\n</section>","rootId":"django-3-1-7-release-notes","toc":[{"title":"CVE-2021-23336: Web cache poisoning via django.utils.http.limited_parse_qsl()","anchor":"cve-2021-23336-web-cache-poisoning-via-django-utils-http-limited-parse-qsl","children":[]},{"title":"Bugfixes","anchor":"bugfixes","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/3.1.8","title":"Django 3.1.8 release notes","url":"/en/dev/releases/3.1.8/"},"next":{"docname":"releases/3.1.6","title":"Django 3.1.6 release notes","url":"/en/dev/releases/3.1.6/"},"formats":{"html":"/en/dev/releases/3.1.7/","markdown":"/en/dev/releases/3.1.7.md","json":"/en/dev/releases/3.1.7.json"},"source":"https://github.com/django/django/blob/main/docs/releases/3.1.7.txt","official":"https://docs.djangoproject.com/en/dev/releases/3.1.7/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1"],"inLocales":["en"]}