- •2. Поменять местами значение двух переменных
- •20. Декоратор @property
- •21. Что происходит если свойство не найдено?
- •27. Какие есть решения для синхронизации данных при работе с потоками?
- •28. Что такое итераторы?
- •38. Что такое middleware?
- •39. Как сделать сообщение с трейсбеком при ошибке(500.Html недостаточно)?
- •40. Какие типы отношений между таблицами бывают в Django-orm?
- •41. Как реализовать отношение ManyToMany без orm?
- •42. Какие встроенные сигналы бывают в Django?
- •43. Что такое mod_wsgi?
- •44. Что такое fixtures?
- •Outer join
- •56. Что такое git rebase?
- •61. Какие есть способы обхода дерева?
- •62. Что такое doctype в html?
- •63. Что такое meta в html?
- •Мета-тег Description, Generator, Keyword, Robots, Content-Language и т д
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 |
Москва |
