Сериализация объектов в Джанго предоставляет механизм преобразования моделей в другие форматы.
Выполняется простой операцией:
from django.core import serializers
data = serializers.serialize("xml", SomeModel.objects.all())
В функцию serialize передаются формат (поддерживается xml, json и yaml) и QuerySet.
Можно указать поля в аргументе fields:
from django.core import serializers
data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))
Десериализация также является очень простой операцией:
for obj in serializers.deserialize("xml", data):
do_something_with(obj)
При этом возвращаются не обычные объекты Джанго, а экземпляры DeserializedObject.
DeserializedObject.save() сохранит объекты в базу.
Может протребоваться выполнить валидации …
Читать далее
По умолчанию создается суперпользователь postgres. С помощью следующей команды зайдем в режиме администртора
$ sudo -u postgres psql
Добавление новой учетной записи
$ sudo -u postgres createuser username
Создание базы данных
$ sudo -u postgres createdb dbname
Задать пароль для пользователя
$ sudo -u postgres psql
psql=# alter user username with encrypted password 'password';
Дать права на работу с базой данных
psql=# grant all privileges on database dbname to username ;
Эти действия можно произвести и внутри psql с помощью …
Читать далее
Для добавления аутентификации воспользуемся библиотекой
Python Social AuthВыполняем установку
$ pip install social-auth-app-django
Добавим ‘social_django’ в INSTALLED_APPS, после чего выполним миграцию
python manage.py migrate
Добавим желаемые бекенды
AUTHENTICATION_BACKENDS = (
'social_core.backends.open_id.OpenIdAuth',
'social_core.backends.google.GoogleOpenId',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.google.GoogleOAuth',
'social_core.backends.twitter.TwitterOAuth',
'social_core.backends.yahoo.YahooOpenId',
...
'django.contrib.auth.backends.ModelBackend',
)
В нашем случае это 'social_core.backends.google.GoogleOAuth'. Не следует забывать про 'django.contrib.auth.backends.ModelBackend', иначе пользователи не смогут входить через встроенную систему аутентификации.
Добавим контекстные процессоры в settings.py
TEMPLATES = [
{
...
'OPTIONS': {
...
'context_processors': [
...
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
...
]
} …
Читать далее
Coverage - инструмент, позволяющий оценить степерь покрытия кода тестами.
Устанавливаем coverage:
pip install coverage
Запускаем тесты:
coverage run manage.py test
Можно указать директорию проекта и шаблон для исключения (например, директории venv)
coverage run --source='.' --omit='venv/*' manage.py test
Формируем отчеты:
coverage report -m
Формируем отчеты html:
coverage html
По умолчанию они будут помещены в html_cov/index.html
Html отчеты в более удобном виде показывают, какие строки кода были исполнены во время тестирования и какие нет.
Читать далее
Быстрый способ передать данные - воспользоваться встроенными средствами Django: dumpdata и loaddata.
./manage.py dumpdata
выведет все данные приложений из INSTALLED APPS.
./manage.py loaddata db.json
загрузит фикстуры (дамп базы данных).
Иногда может потребоваться наполнить базу данными при первоначальном сетапе приложения. Данные могут быть предоставлены в миграциях или фикстурах.
Фикстуры
Во-первых, укажем в настройках директорию (по умолчанию Джанго ищет фикстуры в папке fixtures внутри приложения):
FIXTURE_DIRS = (
'path/app/my_fixtures/',
)
Сделаем дамп базы командой
./manage.py dumpdata
Очистим таблицы и применим миграции
./manage.py …
Читать далее