Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
python&django.docx
Скачиваний:
32
Добавлен:
13.04.2015
Размер:
81.98 Кб
Скачать

38. Что такое middleware?

Связу́ющее програ́ммное обеспе́чение (англ. middleware; также переводится как промежу́точное программное обеспечение, программное обеспечение среднего слоя,подпрогра́ммное обеспечение, межплатфо́рменное программное обеспечение) — широко используемый термин, означающий слой или комплекс технологическогопрограммного обеспечения для обеспечения взаимодействия между различными приложениями, системами, компонентами.

Middleware - это среда реализации отдельных модулей (компонентов) в процессе функционирования Django (запрос-ответ). Это легкая, высокоуровневая система плагинов, которая на глобальном уровне позволяет менять вход и выход Django.  Каждый компонент middleware ответственен за выполнение определенных специфических функций. Например, Django включает в себя комопонент XViewMiddleware, который добавляет HTTP-заголовок "X-View" к каждому ответу на HEAD-запрос. 

39. Как сделать сообщение с трейсбеком при ошибке(500.Html недостаточно)?

Debug = True

40. Какие типы отношений между таблицами бывают в Django-orm?

один-к-одному, один-ко-многим, многие-к-одному, многие-ко-многим.

41. Как реализовать отношение ManyToMany без orm?

Добавить третью связующую таблицу

Со cвзязью один ко многим от первых двух таблиц к ней.

42. Какие встроенные сигналы бывают в Django?

  • django.db.models.signals.pre_save & django.db.models.signals.post_save

Отправляются до или после вызова метода save() модели.

  • django.db.models.signals.pre_delete & django.db.models.signals.post_delete

Отправляются до или после вызова метода delete() модели или delete() класса QuerySet.

  • django.db.models.signals.m2m_changed

Отправляются после изменения ManyToManyField в модели.

  • django.core.signals.request_started & django.core.signals.request_finished

Отправляются, когда Django начинает или заканчивает HTTP запрос.

43. Что такое mod_wsgi?

Если вам нужно использовать Django на публичном, производственном сайте, используйте Apache и mod_wsgi ; mod_wsgi может работать в одном из двух режимов: во встроенном режиме и в режиме демона. Во встроенном режиме mod_wsgi очень похож на mod_perl – он “встраивает” Python в Apache и загружает код Python в память при запуске сервера. Код остаётся в памяти в течение жизни процесса Apache, что даёт значительный рост производительности по сравнению с другими механизмами. В режиме демона mod_wsgi порождает независимый процесс-демон, который обрабатывает запросы. Процесс-демон может работать от имени различных пользователей Web-сервера, что может весьма повысить уровень безопасности. Кроме того, процесс-демон может быть перезапущен без останова и перезапуска самого Apache. Обратитесь к документации mod_wsgi, чтобы определить какой режим подходит вам в большей степени. Убедитесь, что Apache установлен и модуль mod_wsgi активирован. Django будет работать с любой версией Apache, которая имеет поддержку mod_wsgi.

44. Что такое fixtures?

 в django есть возможность сделать так, чтобы данные автоматически вставлялись в базу данных при syncdb проекта. Для этого существуют fixtures - представления данных ваших приложений в форматах .json/.xml/.yaml

python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json

Дополнительные

Class-based views

class-based views — способ описания view в виде классов.

Делаем импорт из django.views.generic

class django.views.generic.base.View

Самый главный класс в CBV. Все остальные представления-классы наследуются от него.

class django.views.generic.base.TemplateView

Обрабатывает заданный шаблон, используя контекст(context), содержащий параметры из URL.

class django.views.generic.base.RedirectView

Редирект на заданный URL.

DetailView

class django.views.generic.detail.DetailView

ListView

class django.views.generic.list.ListView

A page representing a list of objects.

Django ORM

Django предоставляет абстрактный уровень (“модели”) для создания структуры и управления данными вашего приложения

Модели отображают информацию о данных, с которыми вы работаете. Они содержат поля и поведение ваших данных. Обычно одна модель представляет одну таблицу в базе данных.

После создания модели, Django автоматически создает API для работы с базой данных, который позволяет вам создавать, получать, изменять и удалять объекты

Наличие орм дает возможность без сложностей осуществить миграцию с одной бд на другую

Контекстные процессоры

Контекстные процессоры позволяют вам указывать ряд переменных, которые будут устанавливаться автоматически для каждого контекста, без необходимости их указания в каждом вызове render_to_response().

Надо лишь использоватьRequestContext вместо Context при обработке шаблона.

  • Сначала мы определили функцию - контекстный процессор, он принимает объект HttpRequest и возвращает словарь переменных для его последующего использования в контексте шаблона. Вот и всё что он делает.

Теперь функции представления используют RequestContext вместо Context. Есть два различия в методике построения контекста. Первое, RequestContext требует, чтобы первым аргументом былHttpRequest, который передаётся в функцию представления первым аргументом (request). Второе, RequestContext принимает необязательный аргумент processors, который может быть списком или кортежем с функциями контекстного процессора.

  • Теперь каждое представление не нуждается больше во включении переменных в её контекстную конструкцию, потому что они предоставляются функцией custom_proc

Пример:

c = RequestContext(request, {'message': 'I am the fourth view.'}, processors=[custom_proc])

return t.render(c)

SQL

45. Что такое внешний ключ и зачем он нужен?

Поле в таблице БД, которое ссылается на другую таблицу, а значения в этом поле соответствуют первичному ключу в той таблице, на которую ссылается это поле.

46. Что такое GROUP BY?

Фраза GROUP BY (группировать по) инициирует перекомпоновку указанной во FROM таблицы по группам, каждая из которых имеет одинаковые значения в столбце, указанном в GROUP BY.

47. Что такое ORDER BY?

ORDER BY - используется для сортировки результатов в указанной колонке.

48. Что обозначает ключевое слово HAVING?

HAVING — необязательный параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …).

HAVING <условия> аналогичен WHERE <условия> за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов указанных в GROUP BY и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY.

49. Что в чем отличие между LEFT JOIN, RIGHT JOIN и INNER JOIN?

INNER JOIN

Оператор внутреннего соединения INNER JOIN соединяет две таблицы.

Тело результата логически формируется следующим образом. Каждая строка одной таблицы сопоставляется с каждой строкой второй таблицы, после чего для полученной «соединённой» строки проверяется условие соединения (вычисляется предикат соединения). Если условие истинно, в таблицу-результат добавляется соответствующая «соединённая» строка.

SELECT *

FROM

Person

INNER JOIN

City

ON Person.CityId = City.Id

Результат:

Person.Name

Person.CityId

City.Id

City.Name

Андрей

1

1

Москва

Леонид

2

2

Санкт-Петербург

Сергей

1

1

Москва

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]