Everything you wanted to know
about the Django framework

Импорты в Django

Импорт модулей является неотъемлемой частью разработки на Python и Django. PEP8 - официальное руководство по стилю для Python, рекомендует размещать иморты в начале файла, на отдельных строчках и группировать следующим образом:

  1. Импорт стандартных библиотек.
  2. Импорт сторонних библиотек.
  3. Импорт лоакальных приложений или библиотек.

По возможности используйте такой подход, чтобы было проще работать с импортами.

Вот пример views.py для приложения блога:

# blog/views.py
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy

from .models import Post # относительный импорт

class BlogListView(ListView):
    model = Post
    template_name = 'home.html'

Первые три импорта - абсолютный иморт, который используется для импорта пакетов из рабочего окружения проекта или глобально установленных пакетов. Данный пример показывает импорт основного кода Django.

Для импорта нашей модели используется относительный иморт, таким образом мы не указываем напрямую имя приложения, что делает код более переносимым. Если бы мы использовали from blog.models import Post, то если название приложения (blog) потом изменится, то придется везде, где оно используется, редактировать код.

Еще одно замечатльное правило - никогда не использовать импорт всего, т.е. *. Это плохой пример:

# blog/views.py
from django.views.generic import * # Плохая идея!

Почему не следует использовать такой импорт? Если views.generic в какой-то момент в будущем изменится непредвиденными способами, это может вызвать проблемы с безопасностью.

Поделитесь с другими:

Представления-классы
(Class-Based Views)

Детальное описание и структура классов Django.

Усовершенствованное отображение форм с помощью Django Crispy Forms

В этом уроке мы собираемся изучить некоторые функции Django Crispy Forms для обработки расширенных/пользовательских форм с использованием Bootstrap 4.

Запрос по сумме из связанной модели

Понадобилось тут найти несоответствие суммы платежа Payment с суммой связанных ним элементов PaymentItem. Решается это простой аннотацией.

Стала доступна версия Django 3.0 alpha 1

Стала доступна версия Django 3.0 alpha 1. Она представляет собой первый этап цикла выпуска 3.0 и дает вам возможность опробовать изменения, появившиеся в Django 3.0.

Исправления ошибок Django 2.2.5, 2.1.12 и 1.11.24

Сегодня команда разработчиков Django выпустила версии с исправлениями 2.2.5, 2.1.12 и 1.11.24. Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Создание большой XML-карты сайта для Django

Предположим, что у вас так много страниц (тысячи), что вы не можете просто создать один файл /sitemap.xml, в котором перечислены все URL-адреса (он же <loc>). Поэтому вам нужно создать /sitemaps.xml, который указывает на другие файлы карты сайта. А если адресов в каждом тысячи, то нужно сжать эти файлы.

Добавление хранилища Amazon S3 в проект Джанго

В этом руководстве вы узнаете, как использовать сервис Amazon S3 для обработки статических ресурсов и загруженных пользователем файлов, то есть медиа-ресурсов.

Пользовательская модель User

Каждый новый проект Django должен использовать пользовательскую модель User. Официальная документация Django гласит, что это «настоятельно рекомендуется», но я сделаю еще один шаг и без колебаний скажу: вы просто с ума сошли, если не использовали пользовательскую модель раньше.

Создание погодного приложения на Python

Видео, в котором с нуля создаётся полноценное приложение на Python и Django, позволяющие получать информацию про погодные условия в различных городах мира.

Django 2.2.1 - исправления ошибок

Сегодня выпустили версию 2.2.1 с исправлениями ошибок.

Исправление ошибок, Django 2.1.8

Выпущена новая версия Django 2.1.8, в которой исправлена ошибка в админке, допущенная в версии 2.1.7: запрещено редактировать inline-элементы для ManyToManyField, если у пользователя есть только разрешение на просмотр.