Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен? |
Подключение к базе данных
Django с NoSQL
Django официально не поддерживает базы данных NoSQL, но имея в запасе такое большое сообщество разработчиков, Джанго имеет форк с MongoDB в качестве внутренней базы данных.
Для того, чтобы вам продемонстрировать работу, мы будем использовать проект Django-Norel для настройки Django с базой данных MongoDB.
Вы можете найти подробную информацию об этом на http://django-nonrel.org/.
MongoDB можно установить, выполнив шаги, указанные на http://docs.mongodb.org/manual/installation/ отталкиваясь от конфигурации, которая у вас есть.
Сейчас, мы настроим MongoDB для Debian- версии Linux (в частности, Ubuntu).
Импортируйте открытый ключ GPG MongoDB:
sudo apt-key adv--keyserver hkp://keyserver.ubuntu.com:80--recv 7F0CEB10
Создайте файл списка для MongoDB:
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist lOgen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Перезагрузите локальный пакет базы данных:
sudo apt-get update
Установите пакеты MongoDB:
sudo apt-get install -y mongodb-org
Запустите MongoDB:
sudo service mongod start
Проект одностраничного приложения – сокращатель URL-ссылок
Существует два способа, которыми MongoDB может использоваться совместно c Django, которые заключаются в следующем:
- MongoEngine: Это Документ-объектное отображение (думается это ORM, но для документальных баз данных), которое используется для работы с MongoDB из-под Python
- Django-nonrel: Это проект для поддержки Django на нереляционных (NoSQL) базах данных; в настоящее время он поддерживает MongoDB
MongoEngine
Прежде чем двигаться дальше и показать вам, как настроить MongoEngine на совместную работу с Django, нам требуется установка MongoEngine. Установите MongoEngine, введя следующую команду:
pip install mongoengine
Для того чтобы защитить предыдущего проект, который мы создали и добиться лучшего понимания, мы создадим отдельный новый проект для конфигурации MongoDB, и мы используем наш существующий проект для настройки MySQL:
django-admin.py startproject url_shortner cd url_shortner python manage.py startapp url
Это создаст базовую структуру проекта, как мы очень хорошо знаем.
Подключение MongoDB совместно с Django
Нам придется изменить файл, settings.py, и если мы используем только MongoDB для проекта, что верно в данном случае, то мы можем игнорировать стандартный параметр базы данных. Все, что мы должны сделать - вызвать метод connect () на файл settings.py.
Мы разместим пустой внутренний интерфейс для MongoDB. Просто замените следующий код в файле settings.py, которое выглядит следующим образом:
DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Замените предыдущий код следующим:
DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.dummy' } }
Аутентификация в Django
Преимуществом MongoEngine является, что он включает внутренний интерфейс аутентификации Django.
Модель пользователя становится документом MongoDB и имплементирует большинство методов и атрибутов нормальной модели пользователя Django , что делает MongoEngine совместимым с Django. Мы также можем использовать инфраструктуру аутентификации и декораторов, такие, как методы login_required () и authentication().Модуль auth также содержит метод get_user (), который принимает идентификатор пользователя в качестве аргумента и возвращает объект пользователя.
Для включения этого внутреннего интерфейса для MongoEngine, добавьте следующую запись в файл settings.py:
AUTHENTICATION_BACKENDS = ( 'mongoengine.django.auth.MongoEngineBackend', )
Хранение сеанса
В Django можно использовать различные базы данных для хранения сеанса приложения .Чтобы включить сеанс MongoEngine, который хранится в MongoDB, должна быть запись параметра django.contrib.sessions.middleware SessionMiddleware в MlDDLEWARE_CLASSES в файле settings.py. Также должна быть запись о django.contrib.sessions в INSTALLED_APPS, которая уже есть, так как мы начали проект с основной структуры Django.
Теперь все, что вам нужно сделать это добавить следующую строку в файл settings.py:
SESSION_ENGINE = 'mongoengine.django.sessions' SESSION_SERIALIZER = 'mongoengine.django.sessions.BSONSerializer'
Сейчас мы все настроили для небольшого демонстрационного проекта, где мы имплементируем проект сокращателя URL-адресов на MongoDB.
Давайте создадим сперва URL-модель, в которой мы будем хранить все длинные и соответствующие им короткие URL-адреса.
Перейдите к файлу url/models.py:
from django.db import models from mongoengine import * connect('urlShortener')
Вы уже знакомы с двумя строками предыдущего кода, которые импортирует модули.
Третья строка, то есть, connect('urlShortener'), соединяет Django с базой данных MongoDB с именем urlShortener.
MongoDB предоставляет много механизмов подключения, и вы можете выбрать , как, в следующем фрагменте:
from mongoengine import connect connect('project')