Cms django википедия: DjangoCMS2.0 — быстрее, больше, эффективней / Хабр

OOOHOSTING.COM |Django — общие вопросы

Статья о Django посвящена релизу Django SVN, истории создания данного фреймворка, и его отличиям от других фреймворков. Ну и традиционному вопросу: почему «Django»?

Вы можете посмотреть предыдущие релизы здесь:
Django 1.0

FAQ: Общее

Почему этот проект существует?

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

В то же самое время Web-разработчики последовательно становились перфекционистами, когда речь шла о практиках Web-развития.

Осенью 2003, интернет-разработчики (Adrian Holovaty и Simon Willison) забросили PHP и начали использовать Python для разработки веб-сайтов. Поскольку они создавали интерактивные сайты с высокой посещаемостью, такие как Lawrence.com, они начали разрабатывать фреймворк для Web-разработок, который позволил бы им сделать Web-приложения  всё быстрее и быстрее. В течение более чем двух лет они постоянно улучшали этот фреймворк, добавляя различные усовершенствования.

Летом 2005-го года, World Online приняло решение открыть исходный код получившегося продукта — фреймворка Django. Невозможно было бы создать Django без целого ряда продуктов с открытым исходным кодом – Apache, Python, и PostgreSQL и мы очень рады, что сможем быть полезными сообществу разработчиков ПО с открытым исходным кодом.

Что означает “Django”, и как его произносить?

Django назван в честь Django Reinhardt, цыганского джаз-гитариста (с 1930-х до ранних 1950-х). В наши дни он признан одним из лучших гитаристов всех времен.

Послушайте его музыку. Вам понравится.

Django произносится как [ЖЭНГ-Оу] аналогично [ФЭНГ-Оу]. “D” не произносится.

Мы также записали аудио клип произношения.

Устойчив ли Django?

Да. World Online использовал Django более трех лет. Сайты, созданные на Django, выдержали нагрузку в один миллион кликов в час и большое количество DoS-атак. Да, он весьма устойчив.

Масштабируется ли Django?

Да. По сравнению со стоимостью временем на разработку, аппаратные средства дешевы, поэтому Django разработан для использования любого количества аппаратных средств.

Django использует архитектуру “shared-nothing”, это означает, что вы на любом уровне можете добавить такие аппаратные средства как: серверы баз данных, серверы кэширования или серверы Web-приложений.

Фреймворк отделяет такие компоненты, как слой доступа к данным и логику приложения. И он поставляется с простым, но мощным cache framework.

Кто за этим стоит?

Изначально Django был разработан в Web-отделе газеты в Лоренсе, штат Канзас, США. Django теперь в ведении международной группы добровольцев.

Какие сайты используют Django?

Django wiki отражает последовательно растущий список сайтов, управляемых Django. Не стесняйтесь, добавьте свой сайт в этот список.

Django является MVC-фреймворком, но вы называете контроллер «видом», а представление «шаблоном». Почему вы не используете стандартные имена?

Ок, стандартные наименования спорны.

В нашей интерпретации MVC, «вид» описывает данные, представленные пользователю. Неважно как данные выглядят, а важнее знать, какие данные представлены. «Вид» описывает, какие данные вы видите, а не то, как вы их видите. Это тонкое различие.

Так, в нашем случае, «вид» — это callback-функция Python для конкретного URL, потому что эта функция описывает представленные данные.

Кроме того, разумно отделить данные от представления — вот где на помощь приходят шаблоны. В Django, «вид» предоставляет данные, и передает их в шаблон, который описывает, в каком виде они должны быть представлены.

Где же тогда здесь «контроллер»? В случае с Django, это вероятно непосредственно сам фреймворк: механизм, который посылает запрос соответствующему виду, согласно конфигурации Django URL.

Если вы изголодались по акронимам, то вы можете сказать, что Django является “MTV”- фреймворком, где M — модель, T — шаблон и V — вид. Эта разбивка имеет гораздо больше смысла.

<Фреймворк X> выполняет <функцию Y> — почему не Django?

Мы хорошо знаем, что существуют и другие Web-фреймворки, и мы не прочь позаимствовать идеи там, где это необходимо. Однако, Django был разработан именно потому, что мы были недовольны сложившимся положением вещей, так что имейте в виду, что фраза «потому что <Фреймворк X> имеет эту функцию”, не будет достаточным основанием, чтобы добавить её в Django.

Почему вы написали весь Django «с нуля», вместо того чтобы использовать другие библиотеки Python?

Когда несколько лет назад Adrian и Simon создавали Django, они посвятили немало времени исследованиям различных доступных Web-фреймворков Python.

По нашему мнению, ни один из них не удовлетворял наши запросы на 100 процентов.

Мы немного придирчивы. Вы даже можете нас назвать перфекционистами.

Через какое-то время, мы наткнулись на библиотеки с открытым исходным кодом, которые выполняли то, что мы уже осуществили. Увидеть, как другие люди решают задачи так же, как мы, было для нас утешением. Но интегрировать внешний код было уже слишком поздно, так как мы уже написали, проверили и применили наш собственный фреймворк в различных условиях — и наш собственный код великолепно удовлетворил все наши потребности.

Однако, в большинстве случаев, мы обнаружили, что существующие фреймворки/инструменты имеют некие фундаментальные, или даже фатальные недостатки, которые заставили нас быть разборчивее. Не существует инструмента, подходящего нам на 100 %.

Как мы уже говорили: мы придирчивы.

Мы опубликовали наши взгляды на странице design philosophies page.

Действительно ли Django является CMS (Система управления контентом)?

Нет, Django не является CMS, или каким-либо видом “turnkey product”. Это Web-фреймворк; это инструмент программирования, который позволяет вам создавать Web-сайты.

Например, нет большого смысла в сравнении Django с такой программой как Drupal, потому что Django — это фреймворк, который вы используете для создания таких продуктов, как Drupal.

Конечно, интерфейс администратора сайта Django великолепен и экономит время — но это всего лишь один из модулей Django. Кроме того, несмотря на то, что Django имеет специальные возможности для создания  CMS — приложений, это не означает, что он не подходит для создания любых других приложений.

Как я могу скачать документацию Django для её прочтения в автономном режиме?

Документы Django доступны в директории docs любого архива Django. Эти документы находятся в формате ReST (ReStructured Text), и каждый текстовый файл соответствуют Web-странице на официальном сайте Django.

Т.к. документация хранится в общедоступном репозитории, вы можете просматривать изменения в документации, а также и изменения кода.

Технически, документы на сайте Django генерируются из последних версий этих ReST-документов, поэтому документы на сайте Django могут предоставить больше информации, чем документы, находящиеся в последней версии Django.

Где я могу нанять Django-разработчиков?

На странице найм разработчиков Вы можете посмотреть список Django-разработчиков, которые будут рады вам помочь.

Возможно, вас заинтересует размещение работы на сайте http://djangogigs.com/ . Если вы хотите найти людей, работающих с Django в том месте, где вы живете, тогда посмотрите здесь: http://djangopeople.net/.

Оригинал статьи на docs.djangoproject.com

Перевод КОМТЕТ komtet.ru

Вам также может помочь

Django введение — Изучение веб-разработки

  • Обзор: Django
  • Далее

В первой статье о Django мы отвечаем на вопрос «Что такое Django?» и даём обзор того, что делает его особенным. Мы опишем основные функции, в том числе некоторые из расширенных функций, которые у нас не будет времени подробно рассмотреть в этом модуле. Мы также покажем вам некоторые основные строительные блоки приложения Django (хотя на данный момент у вас ещё не будет среды разработки для тестирования).

Требования:Базовая компьютерная грамотность. Общее понимание server-side website programming, и в частности, механики client-server interactions in websites.
Задача:Узнать, что такое Django, какие функции он предоставляет, и основные строительные блоки приложения Django.

Django — это высокоуровневый Python веб-фреймворк, который позволяет быстро создавать безопасные и поддерживаемые веб-сайты. Созданный опытными разработчиками, Django берёт на себя большую часть хлопот веб-разработки, поэтому вы можете сосредоточиться на написании своего веб-приложения без необходимости изобретать велосипед. Он бесплатный и с открытым исходным кодом, имеет растущее и активное сообщество, отличную документацию и множество вариантов как бесплатной, так и платной поддержки.

Django помогает писать программное обеспечение, которое будет:

Полным

Django следует философии «Всё включено» и предоставляет почти всё, что разработчики могут захотеть сделать «из коробки». Поскольку всё, что вам нужно, является частью единого «продукта», всё это безупречно работает вместе, соответствует последовательным принципам проектирования и имеет обширную и актуальную документацию.

Разносторонним

Django может быть (и был) использован для создания практически любого типа веб-сайтов — от систем управления контентом и wiki до социальных сетей и новостных сайтов. Он может работать с любой клиентской средой и может доставлять контент практически в любом формате (включая HTML, RSS-каналы, JSON, XML и т. д.). Сайт, который вы сейчас читаете, создан с помощью Django!

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

Безопасным

Django помогает разработчикам избежать многих распространённых ошибок безопасности, предоставляя фреймворк, разработанный чтобы «делать правильные вещи» для автоматической защиты сайта. Например, Django предоставляет безопасный способ управления учётными записями пользователей и паролями, избегая распространённых ошибок, таких как размещение информации о сеансе в файлы cookie, где она уязвима (вместо этого файлы cookie содержат только ключ, а фактические данные хранятся в базе данных) или непосредственное хранение паролей вместо хэша пароля.

Хэш пароляэто значение фиксированной длины, созданное путём обработки пароля через криптографическую хэш-функцию Django может проверить правильность введённого пароля, пропустив его через хэш-функцию и сравнив вывод с сохранённым значением хэша. Благодаря «одностороннему» характеру функции, даже если сохранённое хэш-значение скомпрометировано, злоумышленнику будет сложно определить исходный пароль.

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

Масштабируемым

Django использует компонентную “shared-nothing” архитектуру (каждая её часть независима от других и, следовательно, может быть заменена или изменена, если это необходимо). Чёткое разделение частей означает, что Django может масштабироваться при увеличении трафика, путём добавления оборудования на любом уровне: серверы кеширования, серверы баз данных или серверы приложений. Одни из самых загруженных сайтов успешно масштабировали Django (например, Instagram и Disqus, если назвать только два из них).

Удобным в сопровождении

Код Django написан с использованием принципов и шаблонов проектирования, которые поощряют создание поддерживаемого и повторно используемого кода. В частности, в нём используется принцип «Don’t Repeat Yourself» (DRY, «не повторяйся»), поэтому нет ненужного дублирования, что сокращает объём кода. Django также способствует группированию связанных функциональных возможностей в повторно используемые «приложения» и, на более низком уровне, группирует связанный код в модули (в соответствии с шаблоном Model View Controller (MVC) (en-US)).

Переносным

Django написан на Python, который работает на многих платформах. Это означает, что вы не привязаны к какой-либо конкретной серверной платформе и можете запускать приложения на многих версиях Linux, Windows и Mac OS X. Кроме того, Django хорошо поддерживается многими веб-хостингами, которые часто предоставляют определённую инфраструктуру и документацию для размещения сайтов Django.

Django был разработан в период с 2003 по 2005 год командой, которая занималась созданием и обслуживанием газетных веб-сайтов. После создания нескольких сайтов, команда начала повторно использовать множество общего кода и шаблонов проектирования. Этот общий код эволюционировал в веб-фреймворк, который превратился в проект «Django» с открытым исходным кодом в июле 2005 года.

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

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

Django — это процветающий совместный проект с открытым исходным кодом, в котором заняты многие тысячи пользователей и участников. Несмотря на то, что у него всё ещё есть некоторые особенности, которые отражают его происхождение, Django превратился в универсальный фреймворк, способный разрабатывать веб-сайты любого типа.

Нет никаких доступных и окончательных оценок популярности серверных фреймворков (хотя сайты наподобие Hot Framework и пытаются оценить популярность, используя такие механизмы, как подсчёт количества проектов на GitHub и вопросов на StackOverflow для каждой платформы). Лучший вопрос — «достаточно ли Django популярен», чтобы избежать проблем непопулярных платформ. Продолжает ли он развиваться? Можете ли вы получить помощь, если вам нужно? Найдёте ли вы оплачиваемую работу, если изучите Django?

Основываясь на количестве крупных сайтов, которые используют Django, количестве участников и количестве людей, предоставляющих как бесплатную, так и платную поддержку, можно ответить: да, Django — популярный фреймворк!

Django используют такие крупные сайты, как Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest и Open Stack (источник: обзорная страница Django).

Веб-фреймворки часто можно поделить на «гибкие» и «негибкие».

Негибкие — это те, у которых есть «правильный путь» для решения какой-либо конкретной задачи. Они часто поддерживают быстрое развёртывание в определённой области (решение проблем определённого типа), потому что правильный способ сделать что-либо обычно хорошо понимается и хорошо документируется. Однако они могут быть менее гибкими при решении проблем за пределами их основной сферы и, как правило, предлагают меньше вариантов того, какие компоненты и подходы они могут использовать.

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

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

На традиционном информационном веб-сайте веб-приложение ожидает HTTP-запросы от веб-браузера (или другого клиента). Когда запрос получен, приложение разрабатывает то, что необходимо на основе URL-адреса и, возможно, данных в POST или GET запросах. В зависимости от того, что требуется, далее он может читать или записывать информацию из базы данных или выполнять другие задачи, необходимые для удовлетворения запроса. Затем приложение вернёт ответ веб-браузеру, часто динамически создавая HTML-страницу для отображения в браузере, вставляя полученные данные в HTML-шаблон.

Веб-приложения, написанные на Django, обычно группируют код, который обрабатывает каждый из этих шагов, в отдельные файлы:

  • URLs: Хотя можно обрабатывать запросы с каждого URL-адреса с помощью одной функции, гораздо удобнее писать отдельную функцию для обработки каждого ресурса. URL-маршрутизатор используется для перенаправления HTTP-запросов в соответствующее представление на основе URL-адреса запроса. Кроме того, URL-маршрутизатор может извлекать данные из URL-адреса в соответствии с заданным шаблоном и передавать их в соответствующую функцию отображения (view) в виде аргументов.
  • View: View (англ. «отображение») — это функция обработчика запросов, которая получает HTTP-запросы и возвращает ответы. Функция view имеет доступ к данным, необходимым для удовлетворения запросов, и делегирует ответы в шаблоны через модели.
  • Models: Модели представляют собой объекты Python, которые определяют структуру данных приложения и предоставляют механизмы для управления (добавления, изменения, удаления) и выполнения запросов в базу данных.
  • Templates: Template (англ. «шаблон») — это текстовый файл, определяющий структуру или разметку страницы (например HTML-страницы), с полями для подстановки, которые используются для вывода актуального содержимого. View может динамически создавать HTML-страницы, используя HTML-шаблоны и заполняя их данными из модели (model). Шаблон может быть использован для определения структуры файлов любых типов, не обязательно HTML.

Примечание: Django реализует уровневую архитектуру «Model View Template (MVT)». Она имеет много общего с более известной архитектурой Model View Controller.

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

Отправка запроса в правильное view (urls.py)

Сопоставитель URL-адресов обычно содержится в файле urls.py. В примере ниже сопоставитель (urlpatterns) определяет список сопоставлений междумаршрутами (определёнными URL-шаблонами) и соответствующими функциями отображения (view). Если получен HTTP-запрос, который имеет URL-адрес, соответствующий определённому шаблону, то затем будет вызвана связанная функция отображения (view) и передана в запрос. ([0-9]+)/$’, views.best),
]

Объект urlpatterns является списком функций path() и/или re_path() (в Python списки определяются с помощью квадратных скобок, внутри которых элементы разделены запятыми и могут содержать необязательную завершающую запятую. Например: [item1, item2, item3,]).

Первый аргумент в обоих методах — маршрут (шаблон), который будет сопоставлен. В методе path() угловые скобки используются для определения частей URL-адреса, которые будут захвачены и переданы в функцию отображения (view) в качестве именованных аргументов. Функция re_path() использует гибкий подход к сопоставлению с шаблоном, известный как регулярное выражение. Мы поговорим об этом в следующей статье!

Второй аргумент — это ещё одна функция, которая будет вызываться при сопоставлении шаблона. Обозначение views.book_detail указывает, что функция называется book_detail() и может быть обнаружена в модуле с именем views (т. е. внутри файла с именем views.py).

Обработка запроса (views.py)

Отображения (views) — это сердце веб-приложения, принимающего HTTP-запросы от веб-клиентов и возвращающего HTTP-ответы. Между этим они используют другие ресурсы фреймворка для доступа к базам данных, шаблонам визуализации и т. д.

В приведённом ниже примере показана минимальная функция представления index(), которая могла быть вызвана нашим сопоставителем URL-адресов в предыдущем разделе. Как и все функции отображения (view), она получает объект HttpRequest в качестве параметра (request) и возвращает объект HttpResponse. В этом случае мы ничего не делаем с запросом, и наш ответ просто возвращает жёстко запрограммированную строку. Мы покажем вам запрос, который делает что-то более интересное в следующем разделе.

## filename: views.py (Django view functions)
from django.http import HttpResponse
def index(request):
    # Получить HttpRequest — параметр запроса
    # Выполнить операции, используя информацию из запроса. 
    # Вернуть HttpResponse
    return HttpResponse('Hello from Django!')

Примечание: Немного Python:

  • Модули Python это библиотеки функций, сохранённые в различных файлах, которые мы можем использовать в нашем коде. Здесь мы импортируем только объект HttpResponse из модуля django.http чтобы использовать его в нашем отображении (view): from django.http import HttpResponse . Также есть другие способы импортирования некоторых или всех объектов модуля.
  • Функции объявляются с помощью ключевого слова def, как показано выше, с именованными параметрами, перечисленными в скобках после имени функции; строка завершается двоеточием. Заметьте, что следующие строки содержат отступы. Отступы важны, так как они определяют, какие строки кода находятся внутри конкретного блока (обязательные отступы — это ключевая особенность Python и одна из причин, почему код на Python так легко читать).

Отображения (view) обычно содержатся в файле views. py.

Определение данных модели (models.py)

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

В приведённом ниже фрагменте кода показана очень простая модель Django для объекта Team. Класс Team наследуется от класса models.Model. Он определяет имя команды и командный уровень в качестве полей символов и задаёт максимальное количество символов, которые могут быть сохранены для каждой записи. Team_level может быть одним из нескольких значений, поэтому мы определяем его как поле выбора и предоставляем сопоставление между отображаемыми вариантами и хранимыми данными вместе со значением по умолчанию.

# filename: models.py
from django.db import models
class Team(models.Model):
    team_name = models.CharField(max_length=40)
    TEAM_LEVELS = (
        ('U09', 'Under 09s'),
        ('U10', 'Under 10s'),
        ('U11', 'Under 11s'),
        ...  #список других командных уровней
    )
    team_level = models.CharField(max_length=3,choices=TEAM_LEVELS,default='U11')

Примечание: Немного Python:

  • Python поддерживает «объектно-ориентированное программирование», то есть стиль программирования, в котором мы организуем наш код в объекты, которые включают связанные данные и функции для работы с этими данными. Объекты также могут наследовать / расширять / выводить из других объектов, позволяя использовать одинаковое поведение между связанными объектами. В Python мы используем ключевое слово class, чтобы определить «скелет» для объекта. Мы можем создать несколько конкретных экземпляров типа объекта на основе модели в классе.
    Так, например, мы имеем класс Team, который происходит от класса Model. Это означает, что эта модель будет содержать все методы модели, но мы также можем дать ей специализированные возможности. В нашей модели мы определяем поля нашей базы данных, в которой будем хранить данные, присваивая им конкретные имена. Django использует эти определения, включая имена полей, для создания основной базы данных.

Запросы данных (views.py)

Модель Django предоставляет простой API запросов для поиска в базе данных. Поиск может осуществляться по нескольким полям одновременно, используя различные критерии (такие как exact («точный»), case-insensitive («без учёта регистра»), greater than («больше чем») и т. д.), и может поддерживать сложные выражения (например, вы можете указать поиск в командах U11, у которых есть имя команды, начинающееся с «Fr» или заканчивается на «al»).

Фрагмент кода показывает функцию view (обработчик ресурсов) для отображения всех команд U09. Выделенная жирным строка показывает, как мы можем использовать модель API-запросов для того, чтобы отфильтровать все записи, где поле team_level в точности содержит текст ‘U09’ (обратите внимание, как эти критерии передаются функции filter() в качестве аргумента с именем поля и типом соответствия, разделённым двойным подчёркиванием: team_level__exact).

## filename: views.py
from django.shortcuts import render
from .models import Team
def index(request):
    list_teams = Team.objects.filter(team_level__exact="U09")
    context = {'youngest_teams': list_teams}
    return render(request, '/best/index.html', context)

Данная функция использует функцию render() для того, чтобы создать HttpResponse, который будет отправлен назад браузеру. Эта функция является ярлыком; она создаёт HTML-файл, комбинируя указанный HTML-шаблон и некоторые данные для вставки в шаблон (предоставляется в переменной с именем «context»). В следующем разделе мы покажем как данные вставляются в шаблон для создания HTML-кода.

Вывод данных (HTML-шаблоны)

Системы шаблонов позволяют указать структуру выходного документа, используя заполнители для данных, которые будут вставлены при генерировании страницы. Шаблоны часто используются для создания HTML, но также могут создавать другие типы документов. Django «из коробки» поддерживает как собственную систему шаблонов, так и другую популярную библиотеку Python под названием Jinja2 (она также может быть использована для поддержки других систем, если это необходимо).

Фрагмент кода показывает, как может выглядеть HTML-шаблон, вызванный функцией render() из предыдущего раздела. Этот шаблон был написан с предположением, что во время отрисовки он будет иметь доступ к переменной списка, названной youngest_teams (содержащейся в контекстной переменной внутри функции render() выше). Внутри скелета HTML мы имеем выражение, которое сначала проверяет, существует ли переменная youngest_teams, а затем повторяет её в цикле for. При каждом повторе шаблон отображает значение team_name каждой команды в элементе <li>.

## filename: best/templates/best/index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Home page</title>
</head>
<body>
  {% if youngest_teams %}
    <ul>
      {% for team in youngest_teams %}
        <li>{{ team.team_name }}</li>
      {% endfor %}
    </ul>
  {% else %}
    <p>No teams are available.</p>
  {% endif %}
</body>
</html>

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

  • Формы: HTML-формы используются для сбора пользовательских данных для обработки на сервере. Django упрощает создание, проверку и обработку формы.
  • Аутентификация пользователя и разрешения: Django включает надёжную систему аутентификации и авторизации пользователей, которая была построена с учётом безопасности.
  • Кеширование: Создание динамического контента намного более интенсивно (и медленнее), чем обслуживание статического содержимого. Django обеспечивает гибкое кеширование, чтобы вы могли хранить всю или часть отображаемой страницы, для того, чтобы она не вызывалась повторно, за исключением случаев, когда это необходимо.
  • Админ-панель: Административная панель в Django включена по умолчанию при создании приложения с использованием основного каркаса. Это упрощает управление админкой администраторам сайта для создания, редактирования и просмотра любых данных на вашем сайте.
  • Сериализация данных (преобразование в последовательную форму): Django упрощает сериализацию и обслуживание ваших данных в таких форматах как XML или JSON. Это может быть полезно при создании веб-сервисов (веб-сайтов, которые исключительно служат для использования данных другими приложениями или сайтами и сами ничего не отображают) или при создании веб-сайта, на котором клиентский код обрабатывает весь рендеринг данных.

Поздравляем, вы завершили первый шаг в своём путешествии по Django! Теперь вы должны понимать основные преимущества Django, немного его истории, и примерно как может выглядеть каждая из основных частей приложения Django. Вы должны также изучить несколько вещей о языке программирования Python, включая синтаксис списков, функций и классов.

Вы уже видели код на Django выше, но в отличие от клиентского кода вам нужно настроить среду разработки для её запуска. Это наш следующий шаг.

  • Обзор: Django
  • Далее

Last modified: , by MDN contributors

документация по django-wiki — документация по django-wiki 0.

9

Поддержка Джанго

В таблице ниже показано, какие версии Django поддерживаются.

Выпуск

Джанго

Обновление с

0.9.х

2.2, 3.0, 3.1,
3.2, 4.0

0,7

0.8.x

2.2, 3.0, 3.1,
3.2, 4.0

0,7

0.7.х

2.2, 3.0, 3.1,
3.2

0,5 или 0,6

0.6.x

2.1, 2.2, 3.0

0,5

0.5.х

2.1, 2.2

0,4

0.4.x

1.11, 2.0, 2.1

0,3

0.3.x

1,8, 1,9,
1.10, 1.11

0,2 ​​

0. 2.x

1,8, 1,9, 1,10

0,1

0.1.x

1,5, 1,6, 1,7

0.0.24

0.0.24

1,4, 1,5, 1,6
1,7 (нестабильный)

0.0.?

Инструкции по обновлению см. в выпуске
Примечания

Переводы (Transifex)

Django-wiki почти полностью переведена на 12 языков, не считая
по умолчанию (англ.). Но, пожалуйста, помогите добавить больше языков! Его
очень просто, вам даже не нужно быть программистом.

Некоторые языки…

  • Нужно немного подтолкнуть, так как они почти полностью готовы

  • Инициирован и нуждается в новом вдохновителе для продолжения амбиций

  • Пока не существует — но вы можете запросить их и стать координатором.

Посетите проект django-wiki на Transifex

Демо

Демонстрация последней версии master доступна здесь, подпишитесь на
учетная запись, чтобы увидеть систему уведомлений, или вы можете войти с помощью
пользователь: тест и пароль: тест .

https://demo.django-wiki.org

ЭТО РАБОТА В ПРОГРЕССЕ…

В настоящее время API модели подвержен небольшим изменениям, а плагин
API кажется довольно стабильным.

Чтобы настроить вики, лучше всего переопределить шаблоны и создать
собственные теги шаблона. Не делайте свою собственную бумажную копию этого репозитория в
чтобы возиться с внутренними частями вики — эта стратегия приведет вас
потерять будущие обновления с улучшенными функциями и плагинами.
Возможно, обновления безопасности!

Цикл выпуска уже начался, поэтому вы можете администрировать django-wiki
через Pypi и pip.

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

Содействие

Пожалуйста, прочтите наш
Руководство разработчика

Манифест

Джанго нужна зрелая вики-система, отвечающая всем требованиям, как
большие и маленькие:

  • Подключаемый и легкий. Не интегрируйте дополнительные функции
    в ядре.

  • Будьте открыты. Сделать API-интерфейс расширения, который позволяет экологии
    wiki расти структурированным образом. В Википедии более 1100
    проекты расширения
    написано для MediaWiki. Мы должны извлечь из этого урок.

  • Будьте умнее. Это
    является
    карта столов в MediaWiki — разберемся с выбором
    другие вики-проекты и сделать свой собственный. Ведь это Джанго
    проект.

  • Будьте проще. Исходный код должен почти объяснять сам себя.

  • Быть структурированным. Markdown — это простой синтаксис для удобства чтения.
    Функции должны быть реализованы либо с помощью простых шаблонов кодирования в
    поле содержимого, а хранится в структурированном виде (в
    базу данных) и управляется через дружественный интерфейс. Это дает
    контроль обратно к разработчику веб-сайта и делает знания более
    пригодный для использования. Просто спросите: почему Википедия никогда не менялась? Ответ: Потому что
    это знание хранится сложным образом, поэтому становится очень
    статический.

Документы

См. папку docs/ или прочитайте их по адресу:

https://django-wiki.readthedocs.io/en/latest/

Если вы хотите что-то добавить, пожалуйста, спросите в группе google или поднимите
если вы сомневаетесь, что что-то может измениться.

Фон

Джанго-вики — это переписанный
django-simplewiki,
проект 2009 года, который должен был стать базовой системой для вики. Он предложил
что пользователь должен настраивать вики, перезаписывая шаблоны, но
вскоре узнал, что единственная настройка, которая действительно имела место, заключалась в том, что
люди разветвили весь проект. Мы не хотим этого для django-wiki, мы
хочу, чтобы он был модульным и расширяемым.

На данный момент Django слишком долго существует без надлежащей вики.
применение. Мечта django-wiki — стать участником
вместе с Mediawiki, чтобы разработчики Django могли придерживаться стандарта Django.
платформу, даже когда вы сталкиваетесь с трудными задачами, такими как внедрение вики.

Вопросы и ответы

  • Почему модуль назван просто вики ? Потому что когда мы пытались
    pip install wiki , он вернул «Не найдено ни одного дистрибутива».
    для вики», так что нам пришлось это компенсировать!

  • Какой язык разметки вы будете использовать?
    Уценка. Разметка
    рендерер не является подключаемой частью, но встроен в ядро
    части. Обсуждение должно проходить здесь:
    https://github.com/django-wiki/django-wiki/issues/76

  • Почему бы не использовать django-reversion? Отличный проект, но если
    вики должна стать амбициозной, кто-то должен будет оптимизировать ее
    поведение и использование стороннего приложения для чего-то вроде
    имеет решающее значение, поскольку система пересмотра в этом отношении не годится.

  • Любая поддержка нескольких вики? Да, в некотором смысле можно просто
    представьте, что у вас всегда есть несколько вики, потому что у вас всегда
    иерархии и полный контроль над их разрешениями. Посмотри это
    обсуждение: https://github.com/django-wiki/django-wiki/issues/63

Требования

Пожалуйста, обратитесь к текущему выпуску, чтобы увидеть точные зависимости версий. И
обратите внимание, что Pillow должен иметь определенные зависимости сборки.
в вашей хост-системе.

  • Джанго

  • Уценка

  • джанго-мпт

  • джанго-сэкидзай

  • sorl-миниатюра

  • Подушка (библиотека изображений Python)

  • Питон>=3,5

Докер тл;др

Здесь доступен докер-контейнер: https://github.com/riotkit-org/docker-django-wiki

Благодарности

  • Люди из edX и MIT за поиск
    и поддерживать проект как финансово, так и идеями.

  • django-cms для рискованных действий
    где ни одно приложение django не было раньше с точки зрения хорошо спланированных функций
    и высокие стандарты. Это очень большое вдохновение.

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

  • жуткий,
    джлуттин,
    пухольт,
    вальберг,
    jdcaballerov,
    йекибуд,
    бриджер,
    ТомЛоттерманн,
    сумасшедший зубр и все
    еще
    вовлеченный!

Установка — документация django-wiki 0.9

Необходимое условие: Подушка

Для обработки изображений django-wiki использует Pillow
библиотека (форк PIL).
Предпочтительным методом должно быть получение общесистемного, предварительно скомпилированного
версию Pillow, например, получив двоичные файлы из вашего Linux
дистрибутивные репозитории.

Дебиан/Убунту

Вам необходимо получить библиотеки разработки, которые нужны Pip для компиляции:

 sudo apt-get установить libjpeg8 libjpeg-dev libpng12-0 libpng12-dev
 

После этого установите с помощью sudo pip install Pillow . Вы могли бы также
установите Pillow для всей системы, потому что существует мало специфичных для версии
зависимости в приложениях Django, когда дело доходит до Pillow, и наличие
многократная установка одного и того же пакета является плохой практикой в
этот случай.

Mac OS X 10.5+

Итан
Тира-Томпсон
создал порты для OS X и сделал их доступными в виде установщика .dmg.
Скачайте и установите универсальный комбинированный пакет
здесь.

После того, как вы установили пакеты, вы можете перейти к pip
установка. PIL автоматически подберет эти библиотеки и скомпилирует
их для использования django.

Установка

Чтобы установить последнюю стабильную версию:

 pip установить вики
 

Установите последнюю предварительную версию (альфа, бета или rc):

 pip install --pre wiki
 

Модернизация

Всегда читайте примечания к выпуску для получения инструкций по обновлению.

Конфигурация

Настройка параметров

. INSTALLED_APPS

Должны быть перечислены следующие приложения — NB! важно
поддерживать порядок из-за реляционных ограничений базы данных:

 'django.contrib.sites.apps.SitesConfig',
'django.contrib.humanize.apps. HumanizeConfig',
'django_nyt.apps.DjangoNytConfig',
'мптт',
'сэкидзай',
'sorl.thumbnail',
'wiki.apps.WikiConfig',
'wiki.plugins.attachments.apps.AttachmentsConfig',
'wiki.plugins.notifications.apps.NotificationsConfig',
'wiki.plugins.images.apps.ImagesConfig',
'wiki.plugins.macros.apps.MacrosConfig',
 

Настройка

context_processors

django-wiki использует бэкэнд Django Templates .
Добавьте 'sekizai.context_processors.sekizai' и 'django.template.context_processors.debug' в
context_processors в настройках бэкенда вашего шаблона.
Пожалуйста, обратитесь к документации по шаблонам Django.
чтобы увидеть текущую настройку по умолчанию для этой переменной.

 ШАБЛОНЫ = [
    {
        'БЭКЭНД': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': правда,
        # ...
        'ПАРАМЕТРЫ': {
            'контекстные_процессоры': [
                'django.contrib. auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.request',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
                "sekizai.context_processors.sekizai",
            ],
        },
    },
]
 

База данных

Для синхронизации и создания таблиц выполните:

 python manage.py миграция
 

Установить

SITE_ID

Если вы работаете со свежей установкой Django, вам необходимо установить SITE_ID

 SITE_ID = 1
 

Обработка учетной записи пользователя

Включена ограниченная обработка учетных записей, позволяющая пользователям регистрироваться. Его
настройки показаны ниже со значениями по умолчанию.