diff --git a/docs/_ext/djangodocs.py b/docs/_ext/djangodocs.py index 95ae530680..95d8e89c9b 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 e77d9e237d..972cc029d7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -120,7 +120,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 f1ebff9729..f5fb0ab276 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 f90d0e8e6e..d61f660cb8 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 20bf84be82..561602ff34 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 8521e01c61..ab191a29d3 100644 --- a/docs/howto/error-reporting.txt +++ b/docs/howto/error-reporting.txt @@ -166,7 +166,7 @@ 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 + variables will be hidden and replaced with stars (``**********``) in the error reports, whereas the value of the ``name`` variable will be disclosed. @@ -213,7 +213,7 @@ 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 + 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, @@ -242,7 +242,7 @@ 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 +(``**********``) 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:: @@ -274,13 +274,13 @@ following methods: .. method:: SafeExceptionReporterFilter.get_post_parameters(request) Returns the filtered dictionary of POST parameters. By default it replaces - the values of sensitive parameters with stars (`**********`). + the values of sensitive parameters with stars (``**********``). .. method:: SafeExceptionReporterFilter.get_traceback_frame_variables(request, tb_frame) Returns the filtered dictionary of local variables for the given traceback frame. By default it replaces the values of sensitive variables with stars - (`**********`). + (``**********``). .. seealso:: diff --git a/docs/howto/outputting-pdf.txt b/docs/howto/outputting-pdf.txt index 4d75eb9e7c..37b71b6761 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 c807dba079..dbadb4cb0a 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 bcb83d18bc..b8ff4de210 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 e9668793a3..efc862dc76 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 00264ab2fa..cc40dfe9db 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 abf0a7ca91..83593f0ae1 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 090f283075..de3a63d924 100644 --- a/docs/ref/contrib/gis/geoquerysets.txt +++ b/docs/ref/contrib/gis/geoquerysets.txt @@ -746,9 +746,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/contrib/postgres/search.txt b/docs/ref/contrib/postgres/search.txt index 367171d128..17a5ea2db6 100644 --- a/docs/ref/contrib/postgres/search.txt +++ b/docs/ref/contrib/postgres/search.txt @@ -104,7 +104,7 @@ See :ref:`postgresql-fts-search-configuration` for an explanation of the .. versionadded:: 2.2 - The `search_type` parameter was added. + The ``search_type`` parameter was added. ``SearchRank`` ============== diff --git a/docs/ref/csrf.txt b/docs/ref/csrf.txt index ee6d0643fe..20a8ddb433 100644 --- a/docs/ref/csrf.txt +++ b/docs/ref/csrf.txt @@ -541,7 +541,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/django-admin.txt b/docs/ref/django-admin.txt index f3e42aa367..c5b56957d2 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -923,7 +923,7 @@ more robust change detection, and a reduction in power usage. Django supports .. versionchanged:: 2.2 - Watchman support replaced support for `pyinotify`. + Watchman support replaced support for ``pyinotify``. When you start the server, and each time you change Python code while the server is running, the system check framework will check your entire Django diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index 0f0544e6fc..4429b7f946 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 6afb180389..73dfe75fb6 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -765,7 +765,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 21fdd15320..06248c0bc0 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 33caed43a8..076691be7d 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 bb7c06fe9f..1b65cc3e28 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 e91c161bb4..d735d22f74 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 89b4473e55..54f131e7d3 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 075e08b32a..f120f9c10d 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 b412d83064..9933c236fc 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 136b953185..53b0c7d486 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 3113d3fa34..502667c0f1 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 ee91dc8a3a..3e20536eea 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 77e82a668f..4c466f9fc6 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 53bae5b049..7dc57ee11b 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 9fa2bdcd10..bb30e2c62d 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 fb33b98883..4864f8a060 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 71688eb80f..db3f6720ea 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 09b602c5c4..085bfe3ace 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 5e01a131a2..ccdb31b7f3 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 b9093e427f..c87f2607c7 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 01f250e3b0..0947874ebd 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 ce39f4fa3e..444679f524 100644 --- a/docs/releases/1.9.txt +++ b/docs/releases/1.9.txt @@ -1116,7 +1116,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"``. @@ -1507,7 +1507,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 fa6accb9fb..b16c53f510 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 e82483c18d..76a6ad4f23 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 86e1f70dc8..96988be833 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 1592ba3c72..d27a3023ea 100644 --- a/docs/spelling_wordlist +++ b/docs/spelling_wordlist @@ -445,6 +445,7 @@ permalink pessimization Peucker pgAdmin +pgBouncer PGRaster phishing php diff --git a/docs/topics/http/urls.txt b/docs/topics/http/urls.txt index 6c6a59b216..20492b8b1f 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,