По вопросам относительно использования образцового класса от веб-платформы Django.

Центральным элементом Django объектно-реляционная схема отображения является Модель. Модель является единственным, категорическим источником информации о Ваших данных. Это содержит существенные поля и поведения данных, которые Вы храните. Обычно каждая модель отображается на таблицу единой базы данных, способом который главным образом отделяется от определенных для поставщика деталей реализации выбранной базы данных.

Основы:

  • Каждая модель является классом Python, который разделяет на подклассы django.db.models.Model.
  • Экземпляры моделей соответствуют строкам таблицы.
  • Модели содержат полевые атрибуты, которые соответствуют столбцам таблицы.
  • Образцовые методы соответствуют SQL-запросам и процедурам по тем запросам.
  • Аргументы образцовым полям и атрибутам внутренних Метаклассов соответствуют свойствам DDL на базовых таблицах базы данных.

Django пропитывает модели с автоматически сгенерированным доступом к базе данных API, который в большинстве случаев позволяет данным быть полученными доступ и измененными в парадигме Pythonic, в противоположность записи необработанного SQL.

Изменение формата Ваших моделей (то есть, изменение полей Ваших моделей или добавление новых моделей, в противоположность добавлению или изменению образцовых экземпляров) известны как миграция схемы.

В дополнение к определению реляционной схемы Ваших данных общепринятая практика для кодирования приложений Django состоит в том, чтобы включать бизнес-логику для запросов и действий с Вашими образцовыми объектами в Ваших образцовых классах (например, или операции уровня строки) и в связанных менеджерах (для класса - или операции уровня таблицы).

Некоторые примеры

Существует "немой" вид способа получить данные из базы данных в представлении. Это просто: просто пользуйтесь любой существующей библиотекой Python, чтобы выполнить SQL-запрос и сделать что-то с результатами.

Это достигается при помощи MySQLdb, чтобы соединиться с базой данных MySQL, получить некоторые записи и подать их к шаблону для дисплея как Веб-страница:

from django.shortcuts import render import MySQLdb def book_list(request): db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost') cursor = db.cursor() cursor.execute('SELECT name FROM books ORDER BY name') names = [row[0] for row in cursor.fetchall()] db.close() return render(request, 'book_list.html', {'names': names}) 

Этот подход работает, но некоторые проблемы должны сразу выскочить в Вас:

  • Мы - жесткое кодирование параметры соединения с базой данных. Идеально, эти параметры были бы сохранены в конфигурации Django.
  • Мы должны написать немного шаблонного кода: создание соединения, создание курсора, выполнение оператора и закрытие соединения. Идеально, все, что мы должны были бы сделать, указывают, какие результаты мы хотели.
  • Это связывает нас с MySQL. Если в будущем мы переключаемся от MySQL до PostgreSQL, мы должны будем использовать другой адаптер базы данных (например, psycopg, а не MySQLdb), изменить параметры соединения, и – в зависимости от природы SQL-оператора – возможно переписывают SQL. Идеально, сервер базы данных, который мы используем, был бы абстрагирован, так, чтобы изменение сервера базы данных могло быть внесено в единственном месте. (Эта функция особенно релевантна, если Вы создаете открытый исходный код приложение Django, что Вы хотите использоваться как можно большим количеством людей.)

Как Вы могли бы ожидать, слой базы данных Django имеет целью решать эти проблемы. Вот предварительный просмотр того, как предыдущее представление может быть переписано с помощью базы данных API Django:

from django.shortcuts import render from mysite.books.models import Book def book_list(request): books = Book.objects.order_by('name') return render(request, 'book_list.html', {'books': books}) 

Ссылки: