Alphabetized imports in various docs.

Follow-up of d97cce3409 and 7d3fe36c62.
This commit is contained in:
Mariusz Felisiak 2018-05-12 19:37:42 +02:00 committed by GitHub
parent 1b7d524cfa
commit 35319bf12c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 71 additions and 71 deletions

View File

@ -105,7 +105,7 @@ template output the commas in a :ttag:`for` loop.
Here's an example, which generates the same CSV file as above:: Here's an example, which generates the same CSV file as above::
from django.http import HttpResponse from django.http import HttpResponse
from django.template import loader, Context from django.template import Content, loader
def some_view(request): def some_view(request):
# Create the HttpResponse object with the appropriate CSV header. # Create the HttpResponse object with the appropriate CSV header.

View File

@ -46,8 +46,8 @@ objects are file-like objects.
Here's a "Hello World" example:: Here's a "Hello World" example::
from reportlab.pdfgen import canvas
from django.http import HttpResponse from django.http import HttpResponse
from reportlab.pdfgen import canvas
def some_view(request): def some_view(request):
# Create the HttpResponse object with the appropriate PDF headers. # Create the HttpResponse object with the appropriate PDF headers.

View File

@ -69,7 +69,7 @@ necessary:
.. code-block:: python .. code-block:: python
# Import the models we created from our "news" app # Import the models we created from our "news" app
>>> from news.models import Reporter, Article >>> from news.models import Article, Reporter
# No reporters are in the system yet. # No reporters are in the system yet.
>>> Reporter.objects.all() >>> Reporter.objects.all()

View File

@ -383,7 +383,7 @@ the Python import path to your :file:`mysite/settings.py` file.
Once you're in the shell, explore the :doc:`database API </topics/db/queries>`:: Once you're in the shell, explore the :doc:`database API </topics/db/queries>`::
>>> from polls.models import Question, Choice # Import the model classes we just wrote. >>> from polls.models import Choice, Question # Import the model classes we just wrote.
# No questions are in the system yet. # No questions are in the system yet.
>>> Question.objects.all() >>> Question.objects.all()
@ -469,7 +469,7 @@ the :doc:`time zone support docs </topics/i18n/timezones>`.
Save these changes and start a new Python interactive shell by running Save these changes and start a new Python interactive shell by running
``python manage.py shell`` again:: ``python manage.py shell`` again::
>>> from polls.models import Question, Choice >>> from polls.models import Choice, Question
# Make sure our __str__() addition worked. # Make sure our __str__() addition worked.
>>> Question.objects.all() >>> Question.objects.all()

View File

@ -69,8 +69,8 @@ create a real version. Add the following to ``polls/views.py``:
.. snippet:: .. snippet::
:filename: polls/views.py :filename: polls/views.py
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse from django.urls import reverse
from .models import Choice, Question from .models import Choice, Question
@ -262,8 +262,8 @@ views and use Django's generic views instead. To do so, open the
.. snippet:: .. snippet::
:filename: polls/views.py :filename: polls/views.py
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse from django.urls import reverse
from django.views import generic from django.views import generic

View File

@ -171,8 +171,8 @@ Put the following in the ``tests.py`` file in the ``polls`` application:
import datetime import datetime
from django.utils import timezone
from django.test import TestCase from django.test import TestCase
from django.utils import timezone
from .models import Question from .models import Question

View File

@ -38,8 +38,8 @@ many projects they are typically the most commonly used views.
**Example myapp/views.py**:: **Example myapp/views.py**::
from django.views.generic.detail import DetailView
from django.utils import timezone from django.utils import timezone
from django.views.generic.detail import DetailView
from articles.models import Article from articles.models import Article
@ -107,8 +107,8 @@ many projects they are typically the most commonly used views.
**Example views.py**:: **Example views.py**::
from django.views.generic.list import ListView
from django.utils import timezone from django.utils import timezone
from django.views.generic.list import ListView
from articles.models import Article from articles.models import Article

View File

@ -15,8 +15,8 @@ editing content:
Some of the examples on this page assume that an ``Author`` model has been Some of the examples on this page assume that an ``Author`` model has been
defined as follows in ``myapp/models.py``:: defined as follows in ``myapp/models.py``::
from django.urls import reverse
from django.db import models from django.db import models
from django.urls import reverse
class Author(models.Model): class Author(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
@ -226,8 +226,8 @@ editing content:
**Example myapp/views.py**:: **Example myapp/views.py**::
from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic.edit import DeleteView
from myapp.models import Author from myapp.models import Author
class AuthorDelete(DeleteView): class AuthorDelete(DeleteView):

View File

@ -220,8 +220,8 @@ example, you might write a simple export function that uses Django's
:doc:`serialization functions </topics/serialization>` to dump some selected :doc:`serialization functions </topics/serialization>` to dump some selected
objects as JSON:: objects as JSON::
from django.http import HttpResponse
from django.core import serializers from django.core import serializers
from django.http import HttpResponse
def export_as_json(modeladmin, request, queryset): def export_as_json(modeladmin, request, queryset):
response = HttpResponse(content_type="application/json") response = HttpResponse(content_type="application/json")

View File

@ -128,7 +128,7 @@ The ``register`` decorator
argument:: argument::
from django.contrib import admin from django.contrib import admin
from .models import Author, Reader, Editor from .models import Author, Editor, Reader
from myproject.admin_site import custom_admin_site from myproject.admin_site import custom_admin_site
@admin.register(Author, Reader, Editor, site=custom_admin_site) @admin.register(Author, Reader, Editor, site=custom_admin_site)
@ -502,12 +502,12 @@ subclass::
that we'd like to use for large text fields instead of the default that we'd like to use for large text fields instead of the default
``<textarea>``. Here's how we'd do that:: ``<textarea>``. Here's how we'd do that::
from django.db import models
from django.contrib import admin from django.contrib import admin
from django.db import models
# Import our custom widget and our model from where they're defined # Import our custom widget and our model from where they're defined
from myapp.widgets import RichTextEditorWidget
from myapp.models import MyModel from myapp.models import MyModel
from myapp.widgets import RichTextEditorWidget
class MyModelAdmin(admin.ModelAdmin): class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = { formfield_overrides = {
@ -581,8 +581,8 @@ subclass::
the same as the callable, but ``self`` in this context is the model the same as the callable, but ``self`` in this context is the model
instance. Here's a full model example:: instance. Here's a full model example::
from django.db import models
from django.contrib import admin from django.contrib import admin
from django.db import models
class Person(models.Model): class Person(models.Model):
name = models.CharField(max_length=50) name = models.CharField(max_length=50)
@ -616,8 +616,8 @@ subclass::
Here's a full example model:: Here's a full example model::
from django.db import models
from django.contrib import admin from django.contrib import admin
from django.db import models
from django.utils.html import format_html from django.utils.html import format_html
class Person(models.Model): class Person(models.Model):
@ -670,8 +670,8 @@ subclass::
Here's a full example model:: Here's a full example model::
from django.db import models
from django.contrib import admin from django.contrib import admin
from django.db import models
class Person(models.Model): class Person(models.Model):
first_name = models.CharField(max_length=50) first_name = models.CharField(max_length=50)
@ -699,8 +699,8 @@ subclass::
For example:: For example::
from django.db import models
from django.contrib import admin from django.contrib import admin
from django.db import models
from django.utils.html import format_html from django.utils.html import format_html
class Person(models.Model): class Person(models.Model):
@ -2572,8 +2572,8 @@ Using generic relations as an inline
It is possible to use an inline with generically related objects. Let's say It is possible to use an inline with generically related objects. Let's say
you have the following models:: you have the following models::
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.db import models
class Image(models.Model): class Image(models.Model):
image = models.ImageField(upload_to="images") image = models.ImageField(upload_to="images")
@ -3001,7 +3001,7 @@ respectively::
# urls.py # urls.py
from django.urls import path from django.urls import path
from myproject.admin import basic_site, advanced_site from myproject.admin import advanced_site, basic_site
urlpatterns = [ urlpatterns = [
path('basic-admin/', basic_site.urls), path('basic-admin/', basic_site.urls),
@ -3111,7 +3111,7 @@ password box.
For example, to get a list of all additions done through the admin:: For example, to get a list of all additions done through the admin::
from django.contrib.admin.models import LogEntry, ADDITION from django.contrib.admin.models import ADDITION, LogEntry
LogEntry.objects.filter(action_flag=ADDITION) LogEntry.objects.filter(action_flag=ADDITION)

View File

@ -241,9 +241,9 @@ generic (sometimes called "polymorphic") relationships between models.
A simple example is a tagging system, which might look like this:: A simple example is a tagging system, which might look like this::
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db import models
class TaggedItem(models.Model): class TaggedItem(models.Model):
tag = models.SlugField() tag = models.SlugField()
@ -371,8 +371,8 @@ Reverse generic relations
If you know which models you'll be using most often, you can also add If you know which models you'll be using most often, you can also add
a "reverse" generic relationship to enable an additional API. For example:: a "reverse" generic relationship to enable an additional API. For example::
from django.db import models
from django.contrib.contenttypes.fields import GenericRelation from django.contrib.contenttypes.fields import GenericRelation
from django.db import models
class Bookmark(models.Model): class Bookmark(models.Model):
url = models.URLField() url = models.URLField()

View File

@ -18,7 +18,7 @@ Example
context of the units. In the example below, two different distance objects are context of the units. In the example below, two different distance objects are
instantiated in units of kilometers (``km``) and miles (``mi``):: instantiated in units of kilometers (``km``) and miles (``mi``)::
>>> from django.contrib.gis.measure import Distance, D >>> from django.contrib.gis.measure import D, Distance
>>> d1 = Distance(km=5) >>> d1 = Distance(km=5)
>>> print(d1) >>> print(d1)
5.0 km 5.0 km

View File

@ -620,7 +620,7 @@ example, coordinates will be expressed in `EPSG SRID 32140`__,
a coordinate system specific to south Texas **only** and in units of a coordinate system specific to south Texas **only** and in units of
**meters**, not degrees:: **meters**, not degrees::
>>> from django.contrib.gis.geos import Point, GEOSGeometry >>> from django.contrib.gis.geos import GEOSGeometry, Point
>>> pnt = Point(954158.1, 4215137.1, srid=32140) >>> pnt = Point(954158.1, 4215137.1, srid=32140)
Note that ``pnt`` may also be constructed with EWKT, an "extended" form of Note that ``pnt`` may also be constructed with EWKT, an "extended" form of
@ -722,7 +722,7 @@ Let's dive right in. Create a file called ``admin.py`` inside the
Next, edit your ``urls.py`` in the ``geodjango`` application folder as follows:: Next, edit your ``urls.py`` in the ``geodjango`` application folder as follows::
from django.contrib.gis import admin from django.contrib.gis import admin
from django.urls import path, include from django.urls import include, path
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),

View File

@ -26,8 +26,8 @@ Fields
to render any HTML, but it is used to process the submitted data and to render any HTML, but it is used to process the submitted data and
validate it. For example:: validate it. For example::
>>> from django.contrib.postgres.forms import SimpleArrayField
>>> from django import forms >>> from django import forms
>>> from django.contrib.postgres.forms import SimpleArrayField
>>> class NumberListForm(forms.Form): >>> class NumberListForm(forms.Form):
... numbers = SimpleArrayField(forms.IntegerField()) ... numbers = SimpleArrayField(forms.IntegerField())
@ -48,8 +48,8 @@ Fields
value is used to split the submitted data. It allows you to chain value is used to split the submitted data. It allows you to chain
``SimpleArrayField`` for multidimensional data:: ``SimpleArrayField`` for multidimensional data::
>>> from django.contrib.postgres.forms import SimpleArrayField
>>> from django import forms >>> from django import forms
>>> from django.contrib.postgres.forms import SimpleArrayField
>>> class GridForm(forms.Form): >>> class GridForm(forms.Form):
... places = SimpleArrayField(SimpleArrayField(IntegerField()), delimiter='|') ... places = SimpleArrayField(SimpleArrayField(IntegerField()), delimiter='|')

View File

@ -63,8 +63,8 @@ article is associated with one or more sites. In Django model terminology,
that's represented by a :class:`~django.db.models.ManyToManyField` in the that's represented by a :class:`~django.db.models.ManyToManyField` in the
``Article`` model:: ``Article`` model::
from django.db import models
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.db import models
class Article(models.Model): class Article(models.Model):
headline = models.CharField(max_length=200) headline = models.CharField(max_length=200)
@ -106,8 +106,8 @@ model in a many-to-one relationship, using
For example, if an article is only allowed on a single site, you'd use a model For example, if an article is only allowed on a single site, you'd use a model
like this:: like this::
from django.db import models
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.db import models
class Article(models.Model): class Article(models.Model):
headline = models.CharField(max_length=200) headline = models.CharField(max_length=200)
@ -218,7 +218,7 @@ different template directories (:setting:`DIRS <TEMPLATES-DIRS>`), you could
simply farm out to the template system like so:: simply farm out to the template system like so::
from django.core.mail import send_mail from django.core.mail import send_mail
from django.template import loader, Context from django.template import Context, loader
def register_for_newsletter(request): def register_for_newsletter(request):
# Check form values, etc., and subscribe the user. # Check form values, etc., and subscribe the user.
@ -325,9 +325,9 @@ with the current :class:`~django.contrib.sites.models.Site`.
Use :class:`~django.contrib.sites.managers.CurrentSiteManager` by adding it to Use :class:`~django.contrib.sites.managers.CurrentSiteManager` by adding it to
your model explicitly. For example:: your model explicitly. For example::
from django.db import models
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.contrib.sites.managers import CurrentSiteManager from django.contrib.sites.managers import CurrentSiteManager
from django.db import models
class Photo(models.Model): class Photo(models.Model):
photo = models.FileField(upload_to='photos') photo = models.FileField(upload_to='photos')
@ -362,9 +362,9 @@ a parameter to
model. The following model, which has a field called ``publish_on``, model. The following model, which has a field called ``publish_on``,
demonstrates this:: demonstrates this::
from django.db import models
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.contrib.sites.managers import CurrentSiteManager from django.contrib.sites.managers import CurrentSiteManager
from django.db import models
class Photo(models.Model): class Photo(models.Model):
photo = models.FileField(upload_to='photos') photo = models.FileField(upload_to='photos')

View File

@ -367,7 +367,7 @@ Here's a full example::
And the accompanying URLconf:: And the accompanying URLconf::
from django.urls import path from django.urls import path
from myproject.feeds import RssSiteNewsFeed, AtomSiteNewsFeed from myproject.feeds import AtomSiteNewsFeed, RssSiteNewsFeed
urlpatterns = [ urlpatterns = [
# ... # ...

View File

@ -202,8 +202,8 @@ both is fine, and will incur minimal overhead.
Usage:: Usage::
from django.views.decorators.csrf import csrf_protect
from django.shortcuts import render from django.shortcuts import render
from django.views.decorators.csrf import csrf_protect
@csrf_protect @csrf_protect
def my_view(request): def my_view(request):
@ -400,8 +400,8 @@ class-based views<decorating-class-based-views>`.
This decorator marks a view as being exempt from the protection ensured by This decorator marks a view as being exempt from the protection ensured by
the middleware. Example:: the middleware. Example::
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt @csrf_exempt
def my_view(request): def my_view(request):
@ -417,8 +417,8 @@ class-based views<decorating-class-based-views>`.
Example:: Example::
from django.views.decorators.csrf import requires_csrf_token
from django.shortcuts import render from django.shortcuts import render
from django.views.decorators.csrf import requires_csrf_token
@requires_csrf_token @requires_csrf_token
def my_view(request): def my_view(request):

View File

@ -229,8 +229,8 @@ defined on the :class:`~django.forms.Field` class itself with the
Simple validators can be used to validate values inside the field, let's have Simple validators can be used to validate values inside the field, let's have
a look at Django's ``SlugField``:: a look at Django's ``SlugField``::
from django.forms import CharField
from django.core import validators from django.core import validators
from django.forms import CharField
class SlugField(CharField): class SlugField(CharField):
default_validators = [validators.validate_slug] default_validators = [validators.validate_slug]

View File

@ -48,7 +48,7 @@ keyword.
Some examples:: Some examples::
>>> from django.db.models import When, F, Q >>> from django.db.models import F, Q, When
>>> # String arguments refer to fields; the following two examples are equivalent: >>> # String arguments refer to fields; the following two examples are equivalent:
>>> When(account_type=Client.GOLD, then='name') >>> When(account_type=Client.GOLD, then='name')
>>> When(account_type=Client.GOLD, then=F('name')) >>> When(account_type=Client.GOLD, then=F('name'))
@ -88,7 +88,7 @@ A simple example::
>>> >>>
>>> from datetime import date, timedelta >>> from datetime import date, timedelta
>>> from django.db.models import CharField, Case, Value, When >>> from django.db.models import Case, CharField, Value, When
>>> Client.objects.create( >>> Client.objects.create(
... name='Jane Doe', ... name='Jane Doe',
... account_type=Client.REGULAR, ... account_type=Client.REGULAR,

View File

@ -979,7 +979,7 @@ than 0. If ``length`` is ``None``, then the rest of the string will be returned.
Usage example:: Usage example::
>>> # Set the alias to the first 5 characters of the name as lowercase >>> # Set the alias to the first 5 characters of the name as lowercase
>>> from django.db.models.functions import Substr, Lower >>> from django.db.models.functions import Lower, Substr
>>> Author.objects.create(name='Margaret Smith') >>> Author.objects.create(name='Margaret Smith')
>>> Author.objects.update(alias=Lower(Substr('name', 1, 5))) >>> Author.objects.update(alias=Lower(Substr('name', 1, 5)))
1 1

View File

@ -26,7 +26,7 @@ Some examples
.. code-block:: python .. code-block:: python
from django.db.models import F, Count, Value from django.db.models import Count, F, Value
from django.db.models.functions import Length, Upper from django.db.models.functions import Length, Upper
# Find companies that have more employees than chairs. # Find companies that have more employees than chairs.
@ -252,7 +252,7 @@ is null) after companies that have been contacted::
database functions like ``COALESCE`` and ``LOWER``, or aggregates like ``SUM``. database functions like ``COALESCE`` and ``LOWER``, or aggregates like ``SUM``.
They can be used directly:: They can be used directly::
from django.db.models import Func, F from django.db.models import F, Func
queryset.annotate(field_lower=Func(F('field'), function='LOWER')) queryset.annotate(field_lower=Func(F('field'), function='LOWER'))

View File

@ -277,7 +277,7 @@ will be stored in a special error dictionary key,
:data:`~django.core.exceptions.NON_FIELD_ERRORS`. This key is used for errors :data:`~django.core.exceptions.NON_FIELD_ERRORS`. This key is used for errors
that are tied to the entire model instead of to a specific field:: that are tied to the entire model instead of to a specific field::
from django.core.exceptions import ValidationError, NON_FIELD_ERRORS from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
try: try:
article.full_clean() article.full_clean()
except ValidationError as e: except ValidationError as e:

View File

@ -176,7 +176,7 @@ view would raise a ``Http404`` error before redirecting to it::
from urllib.parse import urlparse from urllib.parse import urlparse
from django.urls import resolve from django.urls import resolve
from django.http import HttpResponseRedirect, Http404 from django.http import Http404, HttpResponseRedirect
def myview(request): def myview(request):
next = request.META.get('HTTP_REFERER', None) or '/' next = request.META.get('HTTP_REFERER', None) or '/'

View File

@ -210,7 +210,7 @@ The default implementation simply adds the object being displayed to the
template, but you can override it to send more:: template, but you can override it to send more::
from django.views.generic import DetailView from django.views.generic import DetailView
from books.models import Publisher, Book from books.models import Book, Publisher
class PublisherDetail(DetailView): class PublisherDetail(DetailView):
@ -409,8 +409,8 @@ custom view::
Then we'd write our new view -- ``get_object`` is the method that retrieves the Then we'd write our new view -- ``get_object`` is the method that retrieves the
object -- so we simply override it and wrap the call:: object -- so we simply override it and wrap the call::
from django.views.generic import DetailView
from django.utils import timezone from django.utils import timezone
from django.views.generic import DetailView
from books.models import Author from books.models import Author
class AuthorDetailView(DetailView): class AuthorDetailView(DetailView):

View File

@ -99,8 +99,8 @@ First we need to add :meth:`~django.db.models.Model.get_absolute_url()` to our
.. snippet:: .. snippet::
:filename: models.py :filename: models.py
from django.urls import reverse
from django.db import models from django.db import models
from django.urls import reverse
class Author(models.Model): class Author(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
@ -115,8 +115,8 @@ here; we don't have to write any logic ourselves:
.. snippet:: .. snippet::
:filename: views.py :filename: views.py
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from myapp.models import Author from myapp.models import Author
class AuthorCreate(CreateView): class AuthorCreate(CreateView):
@ -150,7 +150,7 @@ Finally, we hook these new views into the URLconf:
:filename: urls.py :filename: urls.py
from django.urls import path from django.urls import path
from myapp.views import AuthorCreate, AuthorUpdate, AuthorDelete from myapp.views import AuthorCreate, AuthorDelete, AuthorUpdate
urlpatterns = [ urlpatterns = [
# ... # ...

View File

@ -521,8 +521,8 @@ write our own ``get_context_data()`` to make the
``AuthorInterestForm`` available to the template. We'll skip the ``AuthorInterestForm`` available to the template. We'll skip the
``get_object()`` override from before for clarity:: ``get_object()`` override from before for clarity::
from django.views.generic import DetailView
from django import forms from django import forms
from django.views.generic import DetailView
from books.models import Author from books.models import Author
class AuthorInterestForm(forms.Form): class AuthorInterestForm(forms.Form):
@ -542,8 +542,8 @@ can find the author we're talking about, and we have to remember to set
``template_name`` to ensure that form errors will render the same ``template_name`` to ensure that form errors will render the same
template as ``AuthorDisplay`` is using on ``GET``:: template as ``AuthorDisplay`` is using on ``GET``::
from django.urls import reverse
from django.http import HttpResponseForbidden from django.http import HttpResponseForbidden
from django.urls import reverse
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin

View File

@ -277,7 +277,7 @@ For example, we can ask for all publishers, annotated with their respective
total book stock counters (note how we use ``'book'`` to specify the total book stock counters (note how we use ``'book'`` to specify the
``Publisher`` -> ``Book`` reverse foreign key hop):: ``Publisher`` -> ``Book`` reverse foreign key hop)::
>>> from django.db.models import Count, Min, Sum, Avg >>> from django.db.models import Avg, Count, Min, Sum
>>> Publisher.objects.annotate(Count('book')) >>> Publisher.objects.annotate(Count('book'))
(Every ``Publisher`` in the resulting ``QuerySet`` will have an extra attribute (Every ``Publisher`` in the resulting ``QuerySet`` will have an extra attribute
@ -324,7 +324,7 @@ constraining the objects for which an annotation is calculated. For example,
you can generate an annotated list of all books that have a title starting you can generate an annotated list of all books that have a title starting
with "Django" using the query:: with "Django" using the query::
>>> from django.db.models import Count, Avg >>> from django.db.models import Avg, Count
>>> Book.objects.filter(name__startswith="Django").annotate(num_authors=Count('authors')) >>> Book.objects.filter(name__startswith="Django").annotate(num_authors=Count('authors'))
When used with an ``aggregate()`` clause, a filter has the effect of When used with an ``aggregate()`` clause, a filter has the effect of
@ -578,6 +578,6 @@ For example, if you wanted to calculate the average number of authors per
book you first annotate the set of books with the author count, then book you first annotate the set of books with the author count, then
aggregate that author count, referencing the annotation field:: aggregate that author count, referencing the annotation field::
>>> from django.db.models import Count, Avg >>> from django.db.models import Avg, Count
>>> Book.objects.annotate(num_authors=Count('authors')).aggregate(Avg('num_authors')) >>> Book.objects.annotate(num_authors=Count('authors')).aggregate(Avg('num_authors'))
{'num_authors__avg': 1.66} {'num_authors__avg': 1.66}

View File

@ -192,7 +192,7 @@ Here's an example view that takes a ``subject``, ``message`` and ``from_email``
from the request's POST data, sends that to admin@example.com and redirects to from the request's POST data, sends that to admin@example.com and redirects to
"/contact/thanks/" when it's done:: "/contact/thanks/" when it's done::
from django.core.mail import send_mail, BadHeaderError from django.core.mail import BadHeaderError, send_mail
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
def send_email(request): def send_email(request):

View File

@ -140,8 +140,8 @@ the proper storage for that file), you can use file storage systems directly.
You can create an instance of some custom file storage class, or -- often more You can create an instance of some custom file storage class, or -- often more
useful -- you can use the global default storage system:: useful -- you can use the global default storage system::
>>> from django.core.files.storage import default_storage
>>> from django.core.files.base import ContentFile >>> from django.core.files.base import ContentFile
>>> from django.core.files.storage import default_storage
>>> path = default_storage.save('/path/to/file', ContentFile('new content')) >>> path = default_storage.save('/path/to/file', ContentFile('new content'))
>>> path >>> path
@ -169,8 +169,8 @@ which implements basic local filesystem file storage.
For example, the following code will store uploaded files under For example, the following code will store uploaded files under
``/media/photos`` regardless of what your :setting:`MEDIA_ROOT` setting is:: ``/media/photos`` regardless of what your :setting:`MEDIA_ROOT` setting is::
from django.db import models
from django.core.files.storage import FileSystemStorage from django.core.files.storage import FileSystemStorage
from django.db import models
fs = FileSystemStorage(location='/media/photos') fs = FileSystemStorage(location='/media/photos')

View File

@ -279,8 +279,8 @@ want it to be published:
.. snippet:: .. snippet::
:filename: views.py :filename: views.py
from django.shortcuts import render
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import NameForm from .forms import NameForm

View File

@ -295,8 +295,8 @@ You can override the error messages from ``NON_FIELD_ERRORS`` raised by model
validation by adding the :data:`~django.core.exceptions.NON_FIELD_ERRORS` key validation by adding the :data:`~django.core.exceptions.NON_FIELD_ERRORS` key
to the ``error_messages`` dictionary of the ``ModelForm``s inner ``Meta`` class:: to the ``error_messages`` dictionary of the ``ModelForm``s inner ``Meta`` class::
from django.forms import ModelForm
from django.core.exceptions import NON_FIELD_ERRORS from django.core.exceptions import NON_FIELD_ERRORS
from django.forms import ModelForm
class ArticleForm(ModelForm): class ArticleForm(ModelForm):
class Meta: class Meta:
@ -573,7 +573,7 @@ fields like you would in a regular ``Form``.
If you want to specify a field's validators, you can do so by defining If you want to specify a field's validators, you can do so by defining
the field declaratively and setting its ``validators`` parameter:: the field declaratively and setting its ``validators`` parameter::
from django.forms import ModelForm, CharField from django.forms import CharField, ModelForm
from myapp.models import Article from myapp.models import Article
class ArticleForm(ModelForm): class ArticleForm(ModelForm):

View File

@ -168,7 +168,7 @@ For example::
Register custom converter classes in your URLconf using Register custom converter classes in your URLconf using
:func:`~django.urls.register_converter`:: :func:`~django.urls.register_converter`::
from django.urls import register_converter, path from django.urls import path, register_converter
from . import converters, views from . import converters, views
@ -614,8 +614,8 @@ You can obtain these in template code by using:
Or in Python code:: Or in Python code::
from django.urls import reverse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.urls import reverse
def redirect_to_year(request): def redirect_to_year(request):
# ... # ...

View File

@ -84,8 +84,8 @@ as a shorter alias, ``_``, to save typing.
In this example, the text ``"Welcome to my site."`` is marked as a translation In this example, the text ``"Welcome to my site."`` is marked as a translation
string:: string::
from django.utils.translation import gettext as _
from django.http import HttpResponse from django.http import HttpResponse
from django.utils.translation import gettext as _
def my_view(request): def my_view(request):
output = _("Welcome to my site.") output = _("Welcome to my site.")
@ -94,8 +94,8 @@ string::
Obviously, you could code this without using the alias. This example is Obviously, you could code this without using the alias. This example is
identical to the previous one:: identical to the previous one::
from django.utils.translation import gettext
from django.http import HttpResponse from django.http import HttpResponse
from django.utils.translation import gettext
def my_view(request): def my_view(request):
output = gettext("Welcome to my site.") output = gettext("Welcome to my site.")
@ -205,8 +205,8 @@ of its value.)
For example:: For example::
from django.utils.translation import ngettext
from django.http import HttpResponse from django.http import HttpResponse
from django.utils.translation import ngettext
def hello_world(request, count): def hello_world(request, count):
page = ngettext( page = ngettext(

View File

@ -86,7 +86,7 @@ show how you can display the results. This example assumes you have a
The view function looks like this:: The view function looks like this::
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.shortcuts import render from django.shortcuts import render
def listing(request): def listing(request):

View File

@ -38,7 +38,7 @@ Example
The following is a simple unit test using the request factory:: The following is a simple unit test using the request factory::
from django.contrib.auth.models import AnonymousUser, User from django.contrib.auth.models import AnonymousUser, User
from django.test import TestCase, RequestFactory from django.test import RequestFactory, TestCase
from .views import MyView, my_view from .views import MyView, my_view

View File

@ -1023,7 +1023,7 @@ If you want to use a different ``Client`` class (for example, a subclass
with customized behavior), use the :attr:`~SimpleTestCase.client_class` class with customized behavior), use the :attr:`~SimpleTestCase.client_class` class
attribute:: attribute::
from django.test import TestCase, Client from django.test import Client, TestCase
class MyTestClient(Client): class MyTestClient(Client):
# Specialized methods for your environment # Specialized methods for your environment