diff --git a/docs/_ext/djangodocs.py b/docs/_ext/djangodocs.py index 95ae5306802..95d8e89c9ba 100644 --- a/docs/_ext/djangodocs.py +++ b/docs/_ext/djangodocs.py @@ -11,10 +11,11 @@ from docutils.statemachine import ViewList from sphinx import addnodes from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.directives import CodeBlock +from sphinx.errors import SphinxError from sphinx.domains.std import Cmdoption from sphinx.errors import ExtensionError from sphinx.util import logging -from sphinx.util.console import bold +from sphinx.util.console import bold, red from sphinx.writers.html import HTMLTranslator logger = logging.getLogger(__name__) @@ -67,6 +68,7 @@ def setup(app): ) app.add_directive('console', ConsoleDirective) app.connect('html-page-context', html_page_context_hook) + app.add_role('default-role-error', default_role_error) return {'parallel_read_safe': True} @@ -371,3 +373,14 @@ def html_page_context_hook(app, pagename, templatename, context, doctree): # This way it's include only from HTML files rendered from reST files where # the ConsoleDirective is used. context['include_console_assets'] = getattr(doctree, '_console_directive_used_flag', False) + + +def default_role_error( + name, rawtext, text, lineno, inliner, options=None, content=None +): + msg = ( + "Default role used (`single backticks`) at line %s: %s. Did you mean " + "to use two backticks for ``code``, or miss an underscore for a " + "`link`_ ?" % (lineno, rawtext) + ) + raise SphinxError(red(msg)) diff --git a/docs/conf.py b/docs/conf.py index fceba45af34..316408dbf1b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -127,7 +127,7 @@ today_fmt = '%B %d, %Y' exclude_patterns = ['_build', '_theme'] # The reST default role (used for this markup: `text`) to use for all documents. -# default_role = None +default_role = "default-role-error" # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True diff --git a/docs/faq/help.txt b/docs/faq/help.txt index f1ebff97298..f5fb0ab276f 100644 --- a/docs/faq/help.txt +++ b/docs/faq/help.txt @@ -36,7 +36,7 @@ your choice of words. .. _message-does-not-appear-on-django-users: -Why hasn't my message appeared on `django-users`? +Why hasn't my message appeared on *django-users*? ================================================= |django-users| has a lot of subscribers. This is good for the community, as diff --git a/docs/faq/troubleshooting.txt b/docs/faq/troubleshooting.txt index 3a5c47de55e..ce468a56a62 100644 --- a/docs/faq/troubleshooting.txt +++ b/docs/faq/troubleshooting.txt @@ -10,7 +10,7 @@ during the development of Django applications. Problems running ``django-admin`` ================================= -"command not found: `django-admin`" +``command not found: django-admin`` ----------------------------------- :doc:`django-admin ` should be on your system path if you diff --git a/docs/howto/deployment/wsgi/uwsgi.txt b/docs/howto/deployment/wsgi/uwsgi.txt index 20bf84be823..561602ff341 100644 --- a/docs/howto/deployment/wsgi/uwsgi.txt +++ b/docs/howto/deployment/wsgi/uwsgi.txt @@ -38,7 +38,7 @@ uWSGI model ----------- uWSGI operates on a client-server model. Your Web server (e.g., nginx, Apache) -communicates with a `django-uwsgi` "worker" process to serve dynamic content. +communicates with a ``django-uwsgi`` "worker" process to serve dynamic content. Configuring and starting the uWSGI server for Django ---------------------------------------------------- diff --git a/docs/howto/error-reporting.txt b/docs/howto/error-reporting.txt index 13043cf3878..c77f1e955e6 100644 --- a/docs/howto/error-reporting.txt +++ b/docs/howto/error-reporting.txt @@ -166,8 +166,8 @@ filtered out of error reports in a production environment (that is, where ... In the above example, the values for the ``user``, ``pw`` and ``cc`` - variables will be hidden and replaced with stars (`**********`) in the - error reports, whereas the value of the ``name`` variable will be + variables will be hidden and replaced with stars (``**********``) + in the error reports, whereas the value of the ``name`` variable will be disclosed. To systematically hide all local variables of a function from error logs, @@ -213,8 +213,9 @@ filtered out of error reports in a production environment (that is, where In the above example, the values for the ``pass_word`` and ``credit_card_number`` POST parameters will be hidden and replaced with - stars (`**********`) in the request's representation inside the error - reports, whereas the value of the ``name`` parameter will be disclosed. + stars (``**********``) in the request's representation inside the + error reports, whereas the value of the ``name`` parameter will be + disclosed. To systematically hide all POST parameters of a request in error reports, do not provide any argument to the ``sensitive_post_parameters`` decorator:: @@ -242,9 +243,9 @@ of reports when an error occurs. The actual filtering is done by Django's default error reporter filter: :class:`django.views.debug.SafeExceptionReporterFilter`. This filter uses the decorators' annotations to replace the corresponding values with stars -(`**********`) when the error reports are produced. If you wish to override or -customize this default behavior for your entire site, you need to define your -own filter class and tell Django to use it via the +(``**********``) when the error reports are produced. If you wish to +override or customize this default behavior for your entire site, you need to +define your own filter class and tell Django to use it via the :setting:`DEFAULT_EXCEPTION_REPORTER_FILTER` setting:: DEFAULT_EXCEPTION_REPORTER_FILTER = 'path.to.your.CustomExceptionReporterFilter' @@ -271,7 +272,8 @@ following attributes and methods: .. versionadded:: 3.1 The string value to replace sensitive value with. By default it - replaces the values of sensitive variables with stars (`**********`). + replaces the values of sensitive variables with stars + (``**********``). .. attribute:: hidden_settings diff --git a/docs/howto/outputting-pdf.txt b/docs/howto/outputting-pdf.txt index 4d75eb9e7c3..37b71b67618 100644 --- a/docs/howto/outputting-pdf.txt +++ b/docs/howto/outputting-pdf.txt @@ -75,8 +75,8 @@ mention: * The response will automatically set the MIME type :mimetype:`application/pdf` based on the filename extension. This tells browsers that the document is a - PDF file, rather than an HTML file or a generic `application/octet-stream` - binary content. + PDF file, rather than an HTML file or a generic + :mimetype:`application/octet-stream` binary content. * When ``as_attachment=True`` is passed to ``FileResponse``, it sets the appropriate ``Content-Disposition`` header and that tells Web browsers to diff --git a/docs/internals/contributing/new-contributors.txt b/docs/internals/contributing/new-contributors.txt index c807dba0797..dbadb4cb0a4 100644 --- a/docs/internals/contributing/new-contributors.txt +++ b/docs/internals/contributing/new-contributors.txt @@ -146,7 +146,7 @@ FAQ (except the Django fellow), and sometimes folks just don't have time. The best thing to do is to send a gentle reminder to the |django-developers| mailing list asking for review on the ticket, or to bring it up in the - `#django-dev` IRC channel. + ``#django-dev`` IRC channel. 2. **I'm sure my ticket is absolutely 100% perfect, can I mark it as RFC myself?** diff --git a/docs/internals/contributing/writing-code/javascript.txt b/docs/internals/contributing/writing-code/javascript.txt index bcb83d18bca..b8ff4de2101 100644 --- a/docs/internals/contributing/writing-code/javascript.txt +++ b/docs/internals/contributing/writing-code/javascript.txt @@ -131,8 +131,8 @@ Testing from the command line To run the tests from the command line, you need to have `Node.js`_ installed. -After installing `Node.js`, install the JavaScript test dependencies by running -the following from the root of your Django checkout: +After installing ``Node.js``, install the JavaScript test dependencies by +running the following from the root of your Django checkout: .. console:: diff --git a/docs/internals/contributing/writing-code/unit-tests.txt b/docs/internals/contributing/writing-code/unit-tests.txt index 62cfb6732e4..21bdf00664e 100644 --- a/docs/internals/contributing/writing-code/unit-tests.txt +++ b/docs/internals/contributing/writing-code/unit-tests.txt @@ -124,7 +124,7 @@ Running the JavaScript tests Django includes a set of :ref:`JavaScript unit tests ` for functions in certain contrib apps. The JavaScript tests aren't run by default -using ``tox`` because they require `Node.js` to be installed and aren't +using ``tox`` because they require ``Node.js`` to be installed and aren't necessary for the majority of patches. To run the JavaScript tests using ``tox``: diff --git a/docs/internals/howto-release-django.txt b/docs/internals/howto-release-django.txt index 8ada93b0ece..22fb393810d 100644 --- a/docs/internals/howto-release-django.txt +++ b/docs/internals/howto-release-django.txt @@ -379,7 +379,7 @@ Now you're ready to actually put the release out there. To do this: message body should include the vulnerability details, for example, the announcement blog post text. Include a link to the announcement blog post. -#. Add a link to the blog post in the topic of the `#django` IRC channel: +#. Add a link to the blog post in the topic of the ``#django`` IRC channel: ``/msg chanserv TOPIC #django new topic goes here``. Post-release diff --git a/docs/ref/contrib/gis/geoip2.txt b/docs/ref/contrib/gis/geoip2.txt index abf0a7ca910..83593f0ae17 100644 --- a/docs/ref/contrib/gis/geoip2.txt +++ b/docs/ref/contrib/gis/geoip2.txt @@ -9,8 +9,8 @@ The :class:`GeoIP2` object is a wrapper for the `MaxMind geoip2 Python library`__. [#]_ In order to perform IP-based geolocation, the :class:`GeoIP2` object requires -the `geoip2 Python library`__ and the GeoIP `Country` and/or `City` `datasets -in binary format`__ (the CSV files will not work!). Grab the +the `geoip2 Python library`__ and the GeoIP ``Country`` and/or ``City`` +`datasets in binary format`__ (the CSV files will not work!). Grab the ``GeoLite2-Country.mmdb.gz`` and ``GeoLite2-City.mmdb.gz`` files and unzip them in a directory corresponding to the :setting:`GEOIP_PATH` setting. diff --git a/docs/ref/contrib/gis/geoquerysets.txt b/docs/ref/contrib/gis/geoquerysets.txt index 7b5cae6e305..98bc8c46136 100644 --- a/docs/ref/contrib/gis/geoquerysets.txt +++ b/docs/ref/contrib/gis/geoquerysets.txt @@ -743,9 +743,9 @@ Distance lookups take the following form:: The value passed into a distance lookup is a tuple; the first two values are mandatory, and are the geometry to calculate distances to, and a distance value (either a number in units of the field, a -:class:`~django.contrib.gis.measure.Distance` object, or a `query expression -`). To pass a band index to the lookup, use a 3-tuple -where the second entry is the band index. +:class:`~django.contrib.gis.measure.Distance` object, or a :doc:`query +expression `). To pass a band index to the lookup, use +a 3-tuple where the second entry is the band index. On every distance lookup except :lookup:`dwithin`, an optional element, ``'spheroid'``, may be included to use the more accurate spheroid distance diff --git a/docs/ref/csrf.txt b/docs/ref/csrf.txt index 7e2a5d45d0c..f181cc1fe19 100644 --- a/docs/ref/csrf.txt +++ b/docs/ref/csrf.txt @@ -531,7 +531,7 @@ Is it a problem that Django's CSRF protection isn't linked to a session by defau ----------------------------------------------------------------------------------- No, this is by design. Not linking CSRF protection to a session allows using -the protection on sites such as a `pastebin` that allow submissions from +the protection on sites such as a *pastebin* that allow submissions from anonymous users which don't have a session. If you wish to store the CSRF token in the user's session, use the diff --git a/docs/ref/forms/widgets.txt b/docs/ref/forms/widgets.txt index 5a54051cdae..76c8dd7a355 100644 --- a/docs/ref/forms/widgets.txt +++ b/docs/ref/forms/widgets.txt @@ -365,7 +365,7 @@ foundation for custom widgets. the ``name`` attribute on each subwidget. In this case, for each ``(key, widget)`` pair, the key will be appended to the ``name`` of the widget in order to generate the attribute value. You may provide the - empty string (`''`) for a single key, in order to suppress the suffix + empty string (``''``) for a single key, in order to suppress the suffix for one widget. For example:: >>> widget = MultiWidget(widgets={'': TextInput, 'last': TextInput}) diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index b896fbb29da..7c5401046b3 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -153,7 +153,7 @@ The first element in each tuple is the name to apply to the group. The second element is an iterable of 2-tuples, with each 2-tuple containing a value and a human-readable name for an option. Grouped options may be combined with ungrouped options within a single list (such as the -`unknown` option in this example). +``'unknown'`` option in this example). For each model field that has :attr:`~Field.choices` set, Django will add a method to retrieve the human-readable name for the field's current value. See diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index fbe7a26a050..cce0fb77790 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -798,7 +798,8 @@ Methods ``content_type`` is the MIME type optionally completed by a character set encoding and is used to fill the HTTP ``Content-Type`` header. If not specified, it is formed by ``'text/html'`` and the - :setting:`DEFAULT_CHARSET` settings, by default: "`text/html; charset=utf-8`". + :setting:`DEFAULT_CHARSET` settings, by default: + ``"text/html; charset=utf-8"``. ``status`` is the :rfc:`HTTP status code <7231#section-6>` for the response. You can use Python's :py:class:`http.HTTPStatus` for meaningful aliases, diff --git a/docs/releases/0.95.txt b/docs/releases/0.95.txt index 21fdd15320a..06248c0bc0f 100644 --- a/docs/releases/0.95.txt +++ b/docs/releases/0.95.txt @@ -109,7 +109,7 @@ many common questions appear with some regularity, and any particular problem may already have been answered. Finally, for those who prefer the more immediate feedback offered by IRC, -there's a `#django` channel on irc.freenode.net that is regularly populated +there's a ``#django`` channel on irc.freenode.net that is regularly populated by Django users and developers from around the world. Friendly people are usually available at any hour of the day -- to help, or just to chat. diff --git a/docs/releases/1.11.1.txt b/docs/releases/1.11.1.txt index 33caed43a82..076691be7da 100644 --- a/docs/releases/1.11.1.txt +++ b/docs/releases/1.11.1.txt @@ -10,7 +10,7 @@ Allowed disabling server-side cursors on PostgreSQL =================================================== The change in Django 1.11 to make :meth:`.QuerySet.iterator()` use server-side -cursors on PostgreSQL prevents running Django with `pgBouncer` in transaction +cursors on PostgreSQL prevents running Django with pgBouncer in transaction pooling mode. To reallow that, use the :setting:`DISABLE_SERVER_SIDE_CURSORS ` setting in :setting:`DATABASES`. diff --git a/docs/releases/1.11.txt b/docs/releases/1.11.txt index bb7c06fe9f1..1b65cc3e283 100644 --- a/docs/releases/1.11.txt +++ b/docs/releases/1.11.txt @@ -185,8 +185,8 @@ Minor features * PostGIS migrations can now change field dimensions. -* Added the ability to pass the `size`, `shape`, and `offset` parameter when - creating :class:`~django.contrib.gis.gdal.GDALRaster` objects. +* Added the ability to pass the ``size``, ``shape``, and ``offset`` parameters + when creating :class:`~django.contrib.gis.gdal.GDALRaster` objects. * Added SpatiaLite support for the :class:`~django.contrib.gis.db.models.functions.IsValid` function, @@ -644,8 +644,8 @@ Server-side cursors on PostgreSQL --------------------------------- The change to make :meth:`.QuerySet.iterator()` use server-side cursors on -PostgreSQL prevents running Django with `pgBouncer` in transaction pooling -mode. To reallow that, use the :setting:`DISABLE_SERVER_SIDE_CURSORS +PostgreSQL prevents running Django with pgBouncer in transaction pooling mode. +To reallow that, use the :setting:`DISABLE_SERVER_SIDE_CURSORS ` setting (added in Django 1.11.1) in :setting:`DATABASES`. diff --git a/docs/releases/1.2.txt b/docs/releases/1.2.txt index e91c161bb40..d735d22f744 100644 --- a/docs/releases/1.2.txt +++ b/docs/releases/1.2.txt @@ -811,16 +811,16 @@ This affects the following settings: ========================================= ========================== Old setting New Setting ========================================= ========================== -`DATABASE_ENGINE` :setting:`ENGINE ` -`DATABASE_HOST` :setting:`HOST` -`DATABASE_NAME` :setting:`NAME` -`DATABASE_OPTIONS` :setting:`OPTIONS` -`DATABASE_PASSWORD` :setting:`PASSWORD` -`DATABASE_PORT` :setting:`PORT` -`DATABASE_USER` :setting:`USER` -`TEST_DATABASE_CHARSET` :setting:`TEST_CHARSET` -`TEST_DATABASE_COLLATION` :setting:`TEST_COLLATION` -`TEST_DATABASE_NAME` :setting:`TEST_NAME` +``DATABASE_ENGINE`` :setting:`ENGINE ` +``DATABASE_HOST`` :setting:`HOST` +``DATABASE_NAME`` :setting:`NAME` +``DATABASE_OPTIONS`` :setting:`OPTIONS` +``DATABASE_PASSWORD`` :setting:`PASSWORD` +``DATABASE_PORT`` :setting:`PORT` +``DATABASE_USER`` :setting:`USER` +``TEST_DATABASE_CHARSET`` :setting:`TEST_CHARSET` +``TEST_DATABASE_COLLATION`` :setting:`TEST_COLLATION` +``TEST_DATABASE_NAME`` :setting:`TEST_NAME` ========================================= ========================== These changes are also required if you have manually created a database diff --git a/docs/releases/1.4.13.txt b/docs/releases/1.4.13.txt index 89b4473e555..54f131e7d31 100644 --- a/docs/releases/1.4.13.txt +++ b/docs/releases/1.4.13.txt @@ -40,8 +40,8 @@ Django relies on user input in some cases (e.g. :doc:`i18n `) to redirect the user to an "on success" URL. The security checks for these redirects (namely ``django.utils.http.is_safe_url()``) did not correctly validate some malformed -URLs, such as `http:\\\\\\djangoproject.com`, which are accepted by some browsers -with more liberal URL parsing. +URLs, such as ``http:\\\\\\djangoproject.com``, which are accepted by some +browsers with more liberal URL parsing. To remedy this, the validation in ``is_safe_url()`` has been tightened to be able to handle and correctly validate these malformed URLs. diff --git a/docs/releases/1.4.18.txt b/docs/releases/1.4.18.txt index 075e08b32ab..f120f9c10d3 100644 --- a/docs/releases/1.4.18.txt +++ b/docs/releases/1.4.18.txt @@ -12,7 +12,7 @@ WSGI header spoofing via underscore/dash conflation When HTTP headers are placed into the WSGI environ, they are normalized by converting to uppercase, converting all dashes to underscores, and prepending -`HTTP_`. For instance, a header ``X-Auth-User`` would become +``HTTP_``. For instance, a header ``X-Auth-User`` would become ``HTTP_X_AUTH_USER`` in the WSGI environ (and thus also in Django's ``request.META`` dictionary). diff --git a/docs/releases/1.4.txt b/docs/releases/1.4.txt index 0fa81b35548..6f74bfa6602 100644 --- a/docs/releases/1.4.txt +++ b/docs/releases/1.4.txt @@ -634,9 +634,9 @@ Django 1.4 also includes several smaller improvements worth noting: :meth:`~django.db.models.query.QuerySet.distinct`. * The admin login page will add a password reset link if you include a URL with - the name `'admin_password_reset'` in your urls.py, so plugging in the built-in - password reset mechanism and making it available is now much easier. For - details, see :ref:`auth_password_reset`. + the name ``'admin_password_reset'`` in your urls.py, so plugging in the + built-in password reset mechanism and making it available is now much easier. + For details, see :ref:`auth_password_reset`. * The MySQL database backend can now make use of the savepoint feature implemented by MySQL version 5.0.3 or newer with the InnoDB storage engine. @@ -671,9 +671,9 @@ vulnerabilities. No Django site should ever be run without a :setting:`SECRET_KEY`. In Django 1.4, starting Django with an empty :setting:`SECRET_KEY` will raise a -`DeprecationWarning`. In Django 1.5, it will raise an exception and Django will -refuse to start. This is slightly accelerated from the usual deprecation path -due to the severity of the consequences of running Django with no +``DeprecationWarning``. In Django 1.5, it will raise an exception and Django +will refuse to start. This is slightly accelerated from the usual deprecation +path due to the severity of the consequences of running Django with no :setting:`SECRET_KEY`. ``django.contrib.admin`` @@ -909,8 +909,8 @@ doesn't make any effort to synchronize access to the underlying backend. Concurrency behavior is defined by the underlying backend implementation. Check their documentation for details. -`COMMENTS_BANNED_USERS_GROUP` setting -------------------------------------- +``COMMENTS_BANNED_USERS_GROUP`` setting +--------------------------------------- Django's comments has historically supported excluding the comments of a special user group, but we've never @@ -946,8 +946,8 @@ Save this model manager in your custom comment app (e.g., in objects = BanningCommentManager() -`IGNORABLE_404_STARTS` and `IGNORABLE_404_ENDS` settings --------------------------------------------------------- +``IGNORABLE_404_STARTS`` and ``IGNORABLE_404_ENDS`` settings +------------------------------------------------------------ Until Django 1.3, it was possible to exclude some URLs from Django's :doc:`404 error reporting` by adding prefixes to @@ -1294,8 +1294,8 @@ Now, the flags are keyword arguments of :meth:`@register.filter See :ref:`filters and auto-escaping ` for more information. -Wildcard expansion of application names in `INSTALLED_APPS` ------------------------------------------------------------ +Wildcard expansion of application names in ``INSTALLED_APPS`` +------------------------------------------------------------- Until Django 1.3, :setting:`INSTALLED_APPS` accepted wildcards in application names, like ``django.contrib.*``. The expansion was performed by a diff --git a/docs/releases/1.5.8.txt b/docs/releases/1.5.8.txt index 136b9531853..53b0c7d4865 100644 --- a/docs/releases/1.5.8.txt +++ b/docs/releases/1.5.8.txt @@ -40,8 +40,8 @@ Django relies on user input in some cases (e.g. :doc:`i18n `) to redirect the user to an "on success" URL. The security checks for these redirects (namely ``django.utils.http.is_safe_url()``) did not correctly validate some malformed -URLs, such as `http:\\\\\\djangoproject.com`, which are accepted by some browsers -with more liberal URL parsing. +URLs, such as ``http:\\\\\\djangoproject.com``, which are accepted by some +browsers with more liberal URL parsing. To remedy this, the validation in ``is_safe_url()`` has been tightened to be able to handle and correctly validate these malformed URLs. diff --git a/docs/releases/1.5.txt b/docs/releases/1.5.txt index 3113d3fa347..502667c0f13 100644 --- a/docs/releases/1.5.txt +++ b/docs/releases/1.5.txt @@ -615,8 +615,8 @@ database state behind or unit tests that rely on some form of state being preserved after the execution of other tests. Such tests are already very fragile, and must now be changed to be able to run independently. -`cleaned_data` dictionary kept for invalid forms ------------------------------------------------- +``cleaned_data`` dictionary kept for invalid forms +-------------------------------------------------- The :attr:`~django.forms.Form.cleaned_data` dictionary is now always present after form validation. When the form doesn't validate, it contains only the diff --git a/docs/releases/1.6.10.txt b/docs/releases/1.6.10.txt index ee91dc8a3af..3e20536eeac 100644 --- a/docs/releases/1.6.10.txt +++ b/docs/releases/1.6.10.txt @@ -11,7 +11,7 @@ WSGI header spoofing via underscore/dash conflation When HTTP headers are placed into the WSGI environ, they are normalized by converting to uppercase, converting all dashes to underscores, and prepending -`HTTP_`. For instance, a header ``X-Auth-User`` would become +``HTTP_``. For instance, a header ``X-Auth-User`` would become ``HTTP_X_AUTH_USER`` in the WSGI environ (and thus also in Django's ``request.META`` dictionary). diff --git a/docs/releases/1.6.5.txt b/docs/releases/1.6.5.txt index 77e82a668f0..4c466f9fc6c 100644 --- a/docs/releases/1.6.5.txt +++ b/docs/releases/1.6.5.txt @@ -40,8 +40,8 @@ Django relies on user input in some cases (e.g. :doc:`i18n `) to redirect the user to an "on success" URL. The security checks for these redirects (namely ``django.utils.http.is_safe_url()``) did not correctly validate some malformed -URLs, such as `http:\\\\\\djangoproject.com`, which are accepted by some browsers -with more liberal URL parsing. +URLs, such as ``http:\\\\\\djangoproject.com``, which are accepted by some +browsers with more liberal URL parsing. To remedy this, the validation in ``is_safe_url()`` has been tightened to be able to handle and correctly validate these malformed URLs. diff --git a/docs/releases/1.6.txt b/docs/releases/1.6.txt index 53bae5b0498..7dc57ee11b2 100644 --- a/docs/releases/1.6.txt +++ b/docs/releases/1.6.txt @@ -731,7 +731,7 @@ Admin views ``_changelist_filters`` GET parameter ------------------------------------------------- To achieve preserving and restoring list view filters, admin views now -pass around the `_changelist_filters` GET parameter. It's important that you +pass around the ``_changelist_filters`` GET parameter. It's important that you account for that change if you have custom admin templates or if your tests rely on the previous URLs. If you want to revert to the original behavior you can set the @@ -924,7 +924,7 @@ Miscellaneous url(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete') -* :class:`~django.views.generic.base.RedirectView` now has a `pattern_name` +* :class:`~django.views.generic.base.RedirectView` now has a ``pattern_name`` attribute which allows it to choose the target by reversing the URL. * In Django 1.4 and 1.5, a blank string was unintentionally not considered to diff --git a/docs/releases/1.7.1.txt b/docs/releases/1.7.1.txt index 9fa2bdcd105..bb30e2c62d6 100644 --- a/docs/releases/1.7.1.txt +++ b/docs/releases/1.7.1.txt @@ -38,7 +38,7 @@ Bugfixes adds a ``get_absolute_url()`` method to any model that appears in ``ABSOLUTE_URL_OVERRIDES`` but doesn't define ``get_absolute_url()``. -* Avoided masking some `ImportError` exceptions during application loading +* Avoided masking some ``ImportError`` exceptions during application loading (:ticket:`22920`). * Empty ``index_together`` or ``unique_together`` model options no longer diff --git a/docs/releases/1.7.3.txt b/docs/releases/1.7.3.txt index fb33b988832..4864f8a0605 100644 --- a/docs/releases/1.7.3.txt +++ b/docs/releases/1.7.3.txt @@ -11,7 +11,7 @@ WSGI header spoofing via underscore/dash conflation When HTTP headers are placed into the WSGI environ, they are normalized by converting to uppercase, converting all dashes to underscores, and prepending -`HTTP_`. For instance, a header ``X-Auth-User`` would become +``HTTP_``. For instance, a header ``X-Auth-User`` would become ``HTTP_X_AUTH_USER`` in the WSGI environ (and thus also in Django's ``request.META`` dictionary). diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index 71688eb80f8..db3f6720ea6 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -479,7 +479,7 @@ Minor features * The ``"django.contrib.sessions.backends.cached_db"`` session backend now respects :setting:`SESSION_CACHE_ALIAS`. In previous versions, it always used - the `default` cache. + the ``default`` cache. :mod:`django.contrib.sitemaps` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1121,9 +1121,9 @@ as ``error_list``; ``error_dict``; or the return value of would have previously found strings. Also if you directly assigned the return value of ``update_error_dict()`` -to ``Form._errors`` you may inadvertently add `list` instances where +to ``Form._errors`` you may inadvertently add ``list`` instances where ``ErrorList`` instances are expected. This is a problem because unlike a -simple `list`, an ``ErrorList`` knows how to handle instances of +simple ``list``, an ``ErrorList`` knows how to handle instances of ``ValidationError``. Most use-cases that warranted using these private APIs are now covered by diff --git a/docs/releases/1.8.1.txt b/docs/releases/1.8.1.txt index 09b602c5c4c..085bfe3ace7 100644 --- a/docs/releases/1.8.1.txt +++ b/docs/releases/1.8.1.txt @@ -84,7 +84,7 @@ Bugfixes ``ModelAdmin.filter_horizontal`` and ``filter_vertical`` options (:ticket:`24676`). -* Fixed `AttributeError: function 'GDALAllRegister' not found` error when +* Fixed ``AttributeError: function 'GDALAllRegister' not found`` error when initializing ``contrib.gis`` on Windows. Optimizations diff --git a/docs/releases/1.8.3.txt b/docs/releases/1.8.3.txt index 5e01a131a24..ccdb31b7f34 100644 --- a/docs/releases/1.8.3.txt +++ b/docs/releases/1.8.3.txt @@ -152,4 +152,4 @@ Bugfixes * Fixed a regression in ``URLValidator`` that invalidated Punycode TLDs (:ticket:`25059`). -* Improved `pyinotify` ``runserver`` polling (:ticket:`23882`). +* Improved ``pyinotify`` ``runserver`` polling (:ticket:`23882`). diff --git a/docs/releases/1.8.6.txt b/docs/releases/1.8.6.txt index b9093e427f8..c87f2607c72 100644 --- a/docs/releases/1.8.6.txt +++ b/docs/releases/1.8.6.txt @@ -36,7 +36,7 @@ Bugfixes migrations using ``QuerySet.defer()`` from leaking to test and application code. -* Fixed a typo in the name of the `strictly_above` PostGIS lookup +* Fixed a typo in the name of the ``strictly_above`` PostGIS lookup (:ticket:`25592`). * Fixed crash with ``contrib.postgres.forms.SplitArrayField`` and diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index 01f250e3b0f..0947874ebd6 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -753,10 +753,10 @@ in :doc:`/howto/custom-management-commands`. Custom test management command arguments through test runner ------------------------------------------------------------ -The method to add custom arguments to the `test` management command through the -test runner has changed. Previously, you could provide an `option_list` class -variable on the test runner to add more arguments (à la :py:mod:`optparse`). -Now to implement the same behavior, you have to create an +The method to add custom arguments to the ``test`` management command through +the test runner has changed. Previously, you could provide an ``option_list`` +class variable on the test runner to add more arguments (à la +:py:mod:`optparse`). Now to implement the same behavior, you have to create an ``add_arguments(cls, parser)`` class method on the test runner and call ``parser.add_argument`` to add any custom arguments, as parser is now an :py:class:`argparse.ArgumentParser` instance. diff --git a/docs/releases/1.9.txt b/docs/releases/1.9.txt index 2fdf361af15..54c02a27621 100644 --- a/docs/releases/1.9.txt +++ b/docs/releases/1.9.txt @@ -1115,7 +1115,7 @@ Miscellaneous :attr:`~django.forms.CharField.strip` argument to ``False``. * Template text that is translated and uses two or more consecutive percent - signs, e.g. ``"%%"``, may have a new `msgid` after ``makemessages`` is run + signs, e.g. ``"%%"``, may have a new ``msgid`` after ``makemessages`` is run (most likely the translation will be marked fuzzy). The new ``msgid`` will be marked ``"#, python-format"``. @@ -1506,7 +1506,7 @@ remove usage of these features. * Database test settings as independent entries in the database settings, prefixed by ``TEST_``, are no longer supported. -* The `cache_choices` option to :class:`~django.forms.ModelChoiceField` and +* The ``cache_choices`` option to :class:`~django.forms.ModelChoiceField` and :class:`~django.forms.ModelMultipleChoiceField` is removed. * The default value of the diff --git a/docs/releases/2.0.4.txt b/docs/releases/2.0.4.txt index fa6accb9fb5..b16c53f510f 100644 --- a/docs/releases/2.0.4.txt +++ b/docs/releases/2.0.4.txt @@ -12,8 +12,8 @@ Bugfixes * Fixed a crash when filtering with an ``Exists()`` annotation of a queryset containing a single field (:ticket:`29195`). -* Fixed admin autocomplete widget's translations for `zh-hans` and `zh-hant` - languages (:ticket:`29213`). +* Fixed admin autocomplete widget's translations for ``zh-hans`` and + ``zh-hant`` languages (:ticket:`29213`). * Corrected admin's autocomplete widget to add a space after custom classes (:ticket:`29221`). diff --git a/docs/releases/2.2.8.txt b/docs/releases/2.2.8.txt index e82483c18de..76a6ad4f235 100644 --- a/docs/releases/2.2.8.txt +++ b/docs/releases/2.2.8.txt @@ -49,7 +49,7 @@ Bugfixes * Fixed a data loss possibility in the admin changelist view when a custom :ref:`formset's prefix ` contains regular expression special - characters, e.g. `'$'` (:ticket:`31031`). + characters, e.g. ``'$'`` (:ticket:`31031`). * Fixed a regression in Django 2.2.1 that caused a crash when migrating permissions for proxy models with a multiple database setup if the diff --git a/docs/releases/2.2.txt b/docs/releases/2.2.txt index 7c989b01546..5c08fa19c20 100644 --- a/docs/releases/2.2.txt +++ b/docs/releases/2.2.txt @@ -458,7 +458,7 @@ Miscellaneous :func:`~django.contrib.sitemaps.ping_google` function, set the new ``sitemap_uses_https`` argument to ``False``. -* :djadmin:`runserver` no longer supports `pyinotify` (replaced by Watchman). +* :djadmin:`runserver` no longer supports ``pyinotify`` (replaced by Watchman). * The :class:`~django.db.models.Avg`, :class:`~django.db.models.StdDev`, and :class:`~django.db.models.Variance` aggregate functions now return a diff --git a/docs/spelling_wordlist b/docs/spelling_wordlist index 99bdba17b37..b240006e2bd 100644 --- a/docs/spelling_wordlist +++ b/docs/spelling_wordlist @@ -446,6 +446,7 @@ permalink pessimization Peucker pgAdmin +pgBouncer PGRaster phishing php diff --git a/docs/topics/http/urls.txt b/docs/topics/http/urls.txt index 292bf0b5c00..ff39635c9ce 100644 --- a/docs/topics/http/urls.txt +++ b/docs/topics/http/urls.txt @@ -124,7 +124,7 @@ The following path converters are available by default: * ``str`` - Matches any non-empty string, excluding the path separator, ``'/'``. This is the default if a converter isn't included in the expression. -* ``int`` - Matches zero or any positive integer. Returns an `int`. +* ``int`` - Matches zero or any positive integer. Returns an ``int``. * ``slug`` - Matches any slug string consisting of ASCII letters or numbers, plus the hyphen and underscore characters. For example,