Django изучаем: Руководство Django часть 4: административная панель Django — Изучение веб-разработки

Содержание

Руководство Django часть 4: административная панель Django — Изучение веб-разработки

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

Предусловия:Сначала завершите: Руководство часть 3: использование моделей.
Цель:

Уяснить преимущества и ограничения админ-панели Django, научиться использовать её для создания записей для наших моделей.

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

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

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

Вначале откройте файл admin.py в папке приложения (/locallibrary/catalog/admin.py). Пока он выглядит так (заметьте, что он уже содержит импорт  django.contrib.admin):

from django.contrib import admin


Зарегистрируйте модели путём вставки следующего текста в нижнюю часть этого файла. Этот код просто импортирует модели и затем вызывает  admin.site.register для регистрации каждой из них.

from .models import Author, Genre, Book, BookInstance

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Genre)
admin.site.register(BookInstance)

Примечание: Если вы приняли участие в создании модели для представления естественного языка книги (см. обучающую статью о моделях), импортируйте и зарегистрируйте её тоже!

Это самый простой способ регистрации модели или моделей. Админ-панель имеет множество настроек. Мы рассмотрим другие способы регистрации ваших моделей ниже.

Для того, чтобы войти в админ-панель, нам необходимо иметь учётную запись пользователя со статусом Staff (сотрудники). Для просмотра и создания записей, пользователю также понадобится разрешение для управления всеми нашими объектами. Вы можете создать учётную запись  «superuser», которая даёт полный доступ к сайту и все необходимые разрешения, используя manage.py.

Для создания суперпользователя вызовите следующую команду из той же папки, где расположен manage.py. Вас попросят ввести имя пользователя, адрес электронной почты и надёжный пароль. 

python3 manage.py createsuperuser

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

python3 manage.py runserver

Для входа в админ-панель откройте ссылку /admin (например  http://127. 0.0.1:8000/admin) и введите логин и пароль вашего нового суперпользователя  (вас перенаправят на login-страницу и потом обратно на /admin после ввода всех деталей).

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

Кликните на ссылке Add справа от Books, чтобы создать новую книгу (появится диалоговое окно как на картинке внизу). Заметьте, что заголовок каждого поля — это тип используемого виджета, и    help_text (если есть) совпадает со значением, которое вы указали в модели. 

Введите значение для полей. Вы можете создавать новых авторов или жанры, нажимая на значок «+ «, расположенный рядом с соответствующим полем (или выберите существующее значение из списков, если вы уже создали их). Когда вы закончили, нажмите на SAVE,  Save and add another, или Save and continue editing, чтобы сохранить записи.

Примечание: А сейчас, хотелось бы, чтобы вы добавили несколько книг, авторов и жанров (например,  Фэнтези) в ваше приложение. Удостоверьтесь, что каждый автор и жанр включает пару различных книг (позже, когда мы реализуем представления «list» и «detail», это сделает их более интересными).

После того, когда книги добавлены, для перехода на главную страницу админ-панели кликните на ссылке Home в верхней части страницы. Потом кликните на ссылке Books для отображения текущего списка книг (или на одной из других ссылок, чтобы увидеть список соответствующей модели). После добавления нескольких книг список может выглядеть наподобие скриншота ниже.  Отображается название каждой из книг. Его возвращает метод __str__() в модели Book, созданной в предыдущей статье.

Для удаления книги из этого списка выберите чекбокс рядом с ней и действие delete…  из выпадающего списка Action, а затем нажмите кнопку Go. Также можно добавить новую книгу, нажав на кнопку ADD BOOK

Вы можете редактировать книгу, кликнув по ссылке с её названием. Страница редактирования книги, приведённая ниже, практически идентична странице добавления новой книги. Основные отличия — это заголовок страницы (Change book) и наличие кнопок Delete, HISTORY и VIEW ON SITE.  Последняя присутствует, так как мы определили метод get_absolute_url() в нашей модели.

Теперь перейдите назад на страницу Home (используя ссылку Home в навигационной цепочке вверху страницы) и просмотрите списки Author и Genre. В них уже должно быть несколько элементов, созданных при добавлении новых книг. Если хотите, добавьте ещё.

Однако у вас не будет ни одного экземпляра книги, потому что они не создаются из модели Book (хотя можно создать книгу из модели BookInstance — такова природа поля ForeignKey). Для отображения страницы Add book instance (см. рисунок ниже) вернитесь на страницу Home  и нажмите кнопку Add. Обратите внимание на длинный уникальный Id для идентификации конкретного экземпляра книги в библиотеке.

Создайте несколько экземпляров для каждой из ваших книг. Установите статус Available (доступен) для некоторых экземпляров и On loan (выдан) для остальных. Если статус экземпляра not Available (недоступен), то также установите дату возврата (Due back).

Вот и все! Вы изучили как запустить и использовать админ-панель. Также были созданы записи для Book, BookInstance, Genre и Author, которые можно будет использовать после создания наших собственных представлений и шаблонов.

Django выполняет неплохую работу по созданию базовой админ-панели используя информацию из зарегистрированных моделей:

  • каждая модель имеет список записей, каждая из которых идентифицируется строкой, создаваемой методом __str__() модели, и связана с представлением для её редактирования. По умолчанию, в верхней части этого представления находится меню действий, которое может быть использовано для удаления нескольких записей за раз
  • Формы для редактирования и добавления записей содержат все поля модели, которые расположены вертикально в порядке их объявления в модели.  

Можно настроить интерфейс пользователя для упрощения его использования. Некоторые доступные настройки:

  • List views:
    • добавление дополнительных отображаемых полей или информации для каждой записи. 
    • добавление фильтров для отбора записей по разным критериям (например, статус выдачи книги).
    • добавление дополнительных вариантов выбора в меню действий и места расположения этого меню на форме.
  • Detail views
    • выбор отображаемых полей, их порядка, группирования и т.д. 
    • добавление связанных полей к записи  (например, возможности добавления и редактирования записей книг при создании записи автора).

В этом разделе рассмотрим некоторые изменения для совершенствования интерфейса пользователя нашей местной библиотеки, а именно: добавление дополнительной информации в списки моделей Book и Author ,  а также улучшение расположения элементов соответствующих представлений редактирования. Пользовательский интерфейс моделей Language and Genre изменять не будем, так как это не даст заметного улучшения, поскольку он содержит только по одному полю!

Полное руководство по всем возможным вариантам настройки админ-панели можно найти в The Django Admin site (документация Django).

Регистрация класса ModelAdmin

Для изменения отображения модели в пользовательском интерфейсе админ-панели, необходимо определить класс ModelAdmin  (он описывает расположение элементов интерфейса, где Model — наименование модели) и зарегистрировать его для использования с этой моделью.

Давайте начнём с модели Author. Откройте файл admin.py в каталоге приложения (/locallibrary/catalog/admin.py). Закомментируйте исходную регистрацию (используя префикс #) этой модели:

# admin.site.register(Author)

Теперь добавьте новый класс AuthorAdmin и зарегистрируйте его как показано ниже:


class AuthorAdmin(admin.ModelAdmin):
    pass


admin.site.register(Author, AuthorAdmin)

Сейчас мы добавим классы ModelAdmin для моделей Book  BookInstance. Нам снова нужно закомментировать исходную регистрацию:

#admin.site.register(Book)
#admin.site.register(BookInstance)

В этот раз для создания и регистрации новых моделей используем декоратор  @register (он делает то же самое, что и метод admin.site.register()):



@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    pass



@admin. register(BookInstance)
class BookInstanceAdmin(admin.ModelAdmin):
    pass

Пока что все наши admin-классы пустые (см. «pass"), поэтому ничего не изменится ! Добавим код для задания особенностей интерфейса моделей.

Настройка отображения списков

Сейчас приложение LocalLibrary отображает всех авторов, используя имя объекта, возвращаемое методом __str__() модели. Это приемлемо, когда есть только несколько авторов, но, если их количество значительно, возможны дубликаты. Чтобы различить их или просто отобразить более интересную информацию о каждом авторе, можно использовать list_display (для добавления дополнительных полей). 

Замените класс AuthorAdmin кодом, приведённым ниже. Названия полей, которые будут отображаться в списке, перечислены в кортеже list_display в требуемом порядке  (это те же имена, что и в исходной модели).

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'date_of_birth', 'date_of_death')

Перезапустите сайт и перейдите к списку авторов. Указанные поля должны отображаться следующим образом:

Для нашей модели Book добавим отображение полей author и genre. Поле author  — это  внешний ключ (ForeignKey ) связи один к одному, поэтому оно будет представлено значением __str()__  для связанной записи. Замените класс BookAdmin на версию, приведённую ниже.

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'display_genre')

К сожалению, мы не можем напрямую поместить поле genre в list_display, так как оно является  ManyToManyField (Django не позволяет это из-за большой «стоимости» доступа к базе данных). Вместо этого мы определим функцию display_genre для получения строкового представления информации (вызов этой функции есть в list_display,  её определение см. ниже).

Примечание: Получение здесь значения поля genre возможно не самая хорошая идея вследствие «стоимости» операции базы данных. Мы показываем это, потому что вызов функций в ваших моделях может быть очень полезен по другим причинам, например, для добавления ссылки  Delete рядом с каждым пунктом списка.

Добавьте следующий код в вашу модель Book (models.py). В нем создаётся строка из первых трёх значений поля genre (если они существуют) и short_description,  которое может быть использовано в админ-панели.

    def display_genre(self):
        """
        Creates a string for the Genre. This is required to display genre in Admin.
        """
        return ', '.join([ genre.name for genre in self.genre.all()[:3] ])
    display_genre.short_description = 'Genre'

После сохранения модели и обновления админ-панели, перезапустите её и перейдите на страницу списка Books. Вы должны увидеть список книг, наподобие приведённого ниже:

Модель Genre (и модель Language, если вы её определили) имеет единственное поле. Поэтому нет необходимости создания для них дополнительных моделей с целью отображения дополнительных полей.

Примечание: целесообразно, чтобы в списке модели BookInstance отображались хотя бы статус и ожидаемая дата возврата. Мы добавили это в качестве «испытания» в конце этой статьи!

Добавление фильтров списка

Если в вашем списке есть множество элементов, может быть полезной возможность фильтрации отображаемых пунктов. Это выполняется путём перечисления их в атрибуте list_filter. Замените класс BookInstanceAdmin на следующий:

class BookInstanceAdmin(admin.ModelAdmin):
    list_filter = ('status', 'due_back')

Представление списка теперь будет содержать панель фильтрации справа. Обратите внимание, как выбирать даты и статус для фильтрации:

Формирование макета с подробным представлением

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

Примечание: Модели LocalLibrary относительно просты, поэтому нам не нужно менять макет, но мы всё равно внесём некоторые изменения, просто чтобы показать вам, как это сделать.

Управление отображаемыми и вложенными полями

Обновите ваш AuthorAdmin класс, чтобы добавить строку полей, как показано ниже (выделено полужирным шрифтом):

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'date_of_birth', 'date_of_death')
    fields = ['first_name', 'last_name', ('date_of_birth', 'date_of_death')]

Атрибут полей перечисляет только те поля, которые должны отображаться в форме, по порядку. Поля отображаются по вертикали по умолчанию, но будут отображаться горизонтально, если вы дополнительно группируете их в кортеже (как показано в полях «date» выше).

Перезагрузите приложение и перейдите к подробному представлению автора — он должен теперь отображаться, как показано ниже:

Примечание: Так же, вы можете использовать exclude атрибут для объявления списка атрибутов, которые будут исключены из формы (все остальные атрибуты в модели, будут отображаться). 

Разделение на секции/Выделение подробного представления

Вы можете добавлять «разделы» (sections) для группировки связанной информации в модели в форме детализации, используя атрибут fieldsets .

В модели BookInstance мы имеем информацию соответствия конкретной книги (т.е. name, imprint, and id) и датой когда она вновь станет доступной (status, due_back). Мы можем добавить их  в разные секции, добавив текст жирным шрифтом в наш BookInstanceAdmin класс. 

@admin.register(BookInstance)
class BookInstanceAdmin(admin. ModelAdmin):
    list_filter = ('status', 'due_back')

    fieldsets = (
        (None, {
            'fields': ('book','imprint', 'id')
        }),
        ('Availability', {
            'fields': ('status', 'due_back')
        }),
    )

Каждая секция имеет свой заголовок (или None, если заголовок не нужен) и ассоциированный кортеж полей в словаре — формат сложный для описания, но относительно простой для понимания, если вы посмотрите на фрагмент кода, представленный выше.

Перезапустите сайт и перейдите к списку экземпляров; форма должна отображаться следующим образом:

Встроенное редактирование связанных записей

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

Вы можете это сделать, объявив inlines, и указав тип TabularInline (горизонтальное расположение) или  StackedInline (вертикальное расположение, так же как и в модели по умолчанию). Вы можете добавить  BookInstance информацию в подробное описание  Book , добавив строки, представленные ниже и располагающиеся рядом с  BookAdmin

class BooksInstanceInline(admin.TabularInline):
    model = BookInstance

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'display_genre')
    inlines = [BooksInstanceInline]

Попробуйте перезапустить приложение, а затем взгляните на представление книги — внизу вы должны увидеть экземпляры книги, относящиеся к этой книге:

В этом случае, всё, что мы сделали — объявили наш встроенный класс tablular, который просто добавляет все поля из встроенной модели. Вы можете указать все виды дополнительной информации для макета, включая отображаемые поля, их порядок, независимо от того, являются ли они только для чтения или нет, и т. д. (См. TabularInline для получения дополнительной информации). 

Примечание: В этой функции есть некоторые неприятные ограничения! На скриншоте выше у нас есть три существующих экземпляра книги, за которыми следуют три поля для новых экземпляров книги (которые очень похожи!). Было бы лучше НЕ иметь лишних экземпляров книг по умолчанию и просто добавить их с помощью ссылки Add another Book instance или иметь возможность просто перечислять BookInstances как нечитаемые здесь ссылки. Первый вариант можно сделать, установив extra атрибут в 0 в модели BookInstanceInline, попробуйте сами.

Мы многое изучили в этом разделе и теперь настало время вам самостоятельно попробовать несколько вещей:

  1. Для представления списка BookInstance , добавьте код  для отображения книги, статуса, даты возврата, и id (вместо значения по умолчанию возвращаемого  __str__() ).
  2. Добавьте встроенный список перечня Book в представление списка Author , используя тот же самый подход, который мы применили для Book/BookInstance.

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

Задание: DIY Django мини блог — Изучение веб-разработки

В этом задании вы будете оценивать знания Django, которые вы приобрели в Django Web Framework (Python), чтобы создать очень простой блог.

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

Страницы, которые должны отображаться, их URL-адреса и другие требования, перечислены ниже:

PageURLRequirements
Home page/ and /blog/Страница индекса, описывающая сайт.
List of all blog posts/blog/blogs/

Список всех сообщений блога:

  • Доступно для всех пользователей из боковой панели.
  • Список отсортирован по дате публикации (от самого нового до самого старого).
  • Список разбит на группы по 5 статьям.
  • Элементы списка отображают название блога, дату публикации и автора.
  • Названия сообщений блога связаны с страницами подробных сведений о блоге.
  • Blogger (имена авторов) связаны с страницами подробных сведений о блоге.
Blog author (blogger) detail page/blog/blogger/<author-id>

Информация для указанного автора (по id) и список постов:

  • Доступен для всех пользователей по ссылкам на автора в сообщениях в блогах и т. Д.
  • Содержит некоторые биографические данные в blogger/author.
  • Список отсортирован по дате добавления (от новых к старым).
  • Не разбит на страницы.
  • Элементы списка отображают только имя сообщения в блоге и дату публикации.
  • Названия блога связаны со страницей блога.
Blog post detail page/blog/<blog-id>

Сведения о блоге.

  • Доступно для всех пользователей из списков блога.
  • Страница содержит сообщение в блоге: имя, автор, дата публикации и содержание.
  • Комментарии к сообщению в блоге должны отображаться внизу.
  • Комментарии должны быть отсортированы по порядку: от старых до самых последних.
  • Содержит ссылку для добавления комментариев на конец для зарегистрированных пользователей (см. Страницу формы комментариев)
  • В блогах и комментариях должен отображаться только обычный текст. Нет необходимости поддерживать какую-либо разметку HTML (например, ссылки, изображения, полужирный / курсив и т. Д.).
List of all bloggers/blog/bloggers/

Список блогеров в системе:

  • Доступный для всех пользователей с боковой панели сайта
  • Имя блогера связано с блогом автора страницы.
Comment form page/blog/<blog-id>/create

Создать комментарий для публикации в блоге:

  • Доступно только зарегистрированным пользователям (только) из ссылки внизу страницы с подробными сведениями блога.
  • Отображает форму с описанием для ввода комментариев (дата публикации и блог недоступны для редактирования).
  • После того, как комментарий будет опубликован, страница будет перенаправлена ​​на связанную страницу блога.
  • Пользователи не могут редактировать или удалять свои сообщения.
  • Вышедшие пользователи будут перенаправлены на страницу входа в систему, чтобы добавить комментарии. После входа в систему они будут перенаправлены на страницу блога, которую они хотели бы прокомментировать.
  • Страницы комментариев должны содержать имя / ссылку на комментарий блога.
User authentication pages/accounts/<standard urls>

Стандартные страницы аутентификации Django для входа, выхода и установки пароля:

  • Вход / выход должен быть доступен через ссылки боковой панели.
Admin site/admin/<standard urls>

Админ-сайт должен быть включён, чтобы разрешить создание / редактирование / удаление сообщений в блогах, авторов блога и комментариев блога (это механизм для создания блогеров в блогах):

  • В админ панеле должен отображаться список комментариев в строке (внизу каждого сообщения в блоге).
  • Имена комментариев в админке создаются усеканием описания комментария до 75 знаков
  • Другие типы записей могут использовать базовую регистрацию.

Кроме того, вы должны написать некоторые базовые тесты для проверки:

  • Все поля модели имеют правильную метку и длину.
  • Все модели имеют ожидаемое имя объекта (например, __str__()выдаёт ожидаемое значение).
  • Модели имеют ожидаемый URL для отдельных записей в блогах и комментариях (например,get_absolute_url() возвращает ожидаемый URL-адрес).
  • Страница BlogListView (страница на всех блогах) доступна в ожидаемом месте (например, /blog/blogs)
  • Страница BlogListView (страница на всех блогах) доступна на ожидаемом именованном URL-адресе (например, ‘blogs’)
  • Страница BlogListView (страница на всех блогах) использует ожидаемый шаблон (например, по умолчанию)
  • BlogListView разбивает записи на 5 (по крайней мере, на первой странице)

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

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

Следующий скриншот — пример того, что должна выводить готовая программа.

Список всех сообщений в блоге

Это отображает список всех сообщений в блоге (доступны из ссылки «All blogs» на боковой панели). Что нужно отметить:

  • На боковой панели также списки вошедшего в систему пользователя.
  • Индивидуальные блоги и блогеры доступны в виде ссылок на странице.
  • Разбивка включена (в группах по 5)
  • Показ от новых к старым.

Список всех блогеров

 

Это ссылки на всех блогеров в «All bloggers» по ссылке, которая на боковой панели. В этом случае мы можем увидеть на боковой панели, что ни один пользователь не вошёл в систему.

Подробная страница блога

Это показывает подробную страницу для конкретного блога.

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

Добавить форму комментария

Это форма добавления комментариев. Обратите внимание, что мы вошли в систему. Когда это удастся, мы должны вернуться к связанной странице блога.

Об авторе

Здесь отображается информация о блогере вместе со списком его блогов.

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

  1. Создайте скелет проекта и веб-приложение для сайта (как описано в  Django Tutorial Part 2: Creating a skeleton website). Вы можете использовать «diyblog» для имени проекта и «blog» для имени приложения.
  2. Создавайте модели для записей в блогах, комментариев и любых других необходимых объектов.
    • Каждый комментарий будет иметь только один блог, но блог может иметь много комментариев.
    • Посты в блоге и комментарии должны быть отсортированы по дате поста.
    • Не каждый пользователь обязательно будет автором блога, хотя любой пользователь может быть комментатором.
    • Блог автора также должен включать информацию о себе.
  3. Запустите миграцию для новых моделей и создайте суперпользователя.
  4. Используйте админ панель, чтобы создать какой-нибудь пример блога и комментарии в блогах.
  5. Создайте представления, шаблоны, и URL-конфигурации для публикации блога и списка страниц блогера.
  6. Создайте представления, шаблоны, и URL-конфигурации для публикации блога и подробных страниц блогера.
  7. Создайте страницу с формой для добавления новых комментариев (не забудьте сделать это доступным только для зарегистрированных пользователей!)

Этот проект очень похож на  LocalLibrary учебник. Вы сможете настроить скелет, поведение входа пользователя / выхода из системы, поддержку статических файлов, представлений, URL-адресов, форм, базовых шаблонов и конфигурации админ-панели, используя почти все те же подходы.

Некоторые общие рекомендации:

  1. Индексная страница (index page) может быть реализована в качестве основной функции представления и шаблона (как и для locallibrary).
  2. Просмотр списка публикаций блога и блогеров, а также подробное представление для сообщений в блоге можно создать с помощью  generic list and detail views.
  3. Список постов в блоге конкретного автора может быть создан с помощью общего списка Blog list view и фильтрация для объекта блога, соответствующего указанному автору.
    • Вам придётся реализовать  get_queryset(self) для фильтрации (как и в нашем классе библиотеки LoanedBooksAllListView) и получить информацию об авторе из URL-адреса.
    • Вам также необходимо передать имя автора на страницу в контексте. Чтобы сделать это в представлении на основе классов, вам необходимо реализовать  get_context_data() (обсуждается ниже).
  4. Форма добавления комментариев может быть создана с использованием функционального представления (и связанной модели и формы) или с использованием общего CreateView. Если вы используете CreateView (рекомендуется):
    • Вам также нужно будет передать имя блога на страницу комментариев в контексте (реализовать  get_context_data() как обсуждается ниже).
    • Форма должна отображать только комментарий «описание» для записи пользователя (дата и связанная с ними запись в блоге не должны редактироваться). Поскольку они не будут в форме, ваш код должен будет установить автора комментария в  form_valid() функцию, поэтому он может быть сохранён в модели (as described here — Django docs). В этой же функции мы устанавливаем связанный блог. Возможная реализация показана ниже (pk это идентификатор блога, переданный из URL / URL конфигурации ).
          def form_valid(self, form):
              """
              Add author and associated blog to form data before setting it as valid (so it is saved to model)
              """
              
              form.instance.author = self.request.user
              
              form.instance.blog=get_object_or_404(Blog, pk = self.kwargs['pk'])
              
              return super(BlogCommentCreate, self).form_valid(form)
      
    •  Для успешного перенаправления после проверки формы вам нужно будет указать URL-адрес;  это должен быть оригинальный блог. Для этого вам нужно будет переопределить  get_success_url() и «обратный» URL-адрес для исходного блога. Вы можете получить требуемый ID блога, используя self.kwargs атрибут, как показано в методе form_valid() выше.

Мы кратко говорили о передаче контекста шаблону в представлении на основе классов в теме  Django Tutorial Part 6: Generic list and detail views. Для этого вам нужно переопределить get_context_data() (сначала получить существующий контекст, обновить его любыми дополнительными переменными, которые вы хотите передать шаблону, а затем вернуть обновлённый контекст). Например, фрагмент кода ниже показывает, как вы можете добавить объект blogger в контекст на основе его BlogAuthor id.

class SomeView(generic.ListView):
    ...

    def get_context_data(self, **kwargs):
        
        context = super(SomeView, self).get_context_data(**kwargs)
        
        context['blogger'] = get_object_or_404(BlogAuthor, pk = self.kwargs['pk'])
        return context

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

После того, как вы завершили этот модуль, вы также закончили весь контент MDN для изучения базового веб-сайта на сервере Django! Надеемся, вам понравится этот модуль и вы почувствуете, что у вас есть хорошее понимание основ!

 

Руководство по Django часть 2: создание скелета — Изучение веб-разработки

Это вторая статья из нашего руководства по Django, которая показывает, как можно создать «скелет» сайта, как фундамент, на котором можно строить всё остальное: настройки, ссылки, модели, контроллеры и представления.

Эта статья показывает, как можно создать «скелет»(прототип) сайта, который затем можно расширить при помощи различных настроек, url адресов, моделей, представлений, и шаблонов (эти темы будут объясняться в последующих статьях).

Алгоритм следующий:

  1. Использовать django-admin для создания папки проекта, шаблонов остальных файлов, и скрипта для управления проектом (manage.py).
  2. Использовать manage.py для создания одного или нескольких приложений.

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

  3. Зарегистрировать в настройках эти приложения, чтобы использовать их в проекте.
  4. Настроить маршруты url адресов для каждого из приложений.

Для Сайта местной библиотеки папка сайта и проекта будет называться locallibrary, и у нас будет одно приложение с названием catalog. Верхняя структура проекта будет следующей:

locallibrary/         
    manage.py         
    locallibrary/     
    catalog/          

Следующие разделы статьи разложат по полочкам этапы создания «скелета», и покажут вам, как можно проверить сделанные изменения. В конце статьи мы обсудим некоторые другие настройки сайта, которые можно назначить на этом этапе.

Для начала откройте командную строку/терминал, перейдите в ту папку, куда вы хотите поместить проект Django(лучше в папке профиля пользователя C:\Users\user_name, при запуске командной строки используется именно эта директория), и создайте папку для вашего нового сайта (в данном случае: locallibrary). Затем войдите в эту папку, используя команду cd:

mkdir locallibrary
cd locallibrary

Создайте новую папку, используя команду django-admin startproject как в примере ниже, и затем зайдите в созданную папку.

  django-admin startproject locallibrary .
cd locallibrary

Команда django-admin создаст файловую структуру, как в примере ниже:

locallibrary/
    manage.py
    locallibrary/
        settings.py
        urls.py
        wsgi.py

Подпапка проекта locallibrary это ключевая директория нашего проекта: 

  • settings.py содержит в себе все настройки проекта. Здесь мы регистрируем приложения, задаём размещение статичных файлов, настройки базы данных и так далее.  
  • urls.py задаёт ассоциации url адресов с представлениями. Несмотря на то, что этот файл может содержать все настройки url, обычно его делят на части, по одной на приложение, как будет показано далее.
  • wsgi.py используется для налаживания связи между вашим Django приложением и веб-сервером. Вы можете воспринимать его, как утилиту.

Скрипт manage.py используется для создания приложений, работы с базами данных и для запуска отладочного сервера. 

Выполнив предыдущие шаги, запустите следующую команду для создания приложения catalog, который будет размещён внутри папки locallibrary (команду необходимо выполнять из папки, в которой находится manage.py):

python3 manage.py startapp catalog

Примечание: приведённая выше команда справедлива для GNU Linux/Mac OS. На Windows команда должна иметь вид: py -3 manage.py startapp catalog

Если вы работаете под Windows, заменяйте команду python3 на py -3 в этой и следующих статьях.

Эта команда создаст новую папку и наполнит её файлами различных частей приложения (выделенные полужирным ниже). Большинство файлов названы, исходя из их назначения (например контроллеры(views) должны находится во views.py, модели в models.py, тесты в tests.py, настройки административной части в admin.py, регистрация приложения в apps.py) и уже содержат некоторый шаблонный код для работы с вышеназванными объектами.

Обновлённая директория должна выглядеть следующим образом:

locallibrary/
    manage.py
    locallibrary/
    catalog/
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        __init__.py
        migrations/

Кроме перечисленных выше файлов были созданы:

  • Папка migrations используется, чтобы хранить»миграции» — файлы, которые позволяют вам автоматически обновлять базу данных по мере изменения моделей. 
  • __init__.py — пустой файл для того, чтобы Django и Python распознавали папку как Python модуль и позволяет нам использовать его объекты внутри других частей проекта.

Примечание: Заметили, что некоторых файлов не хватает? В то время, как там нашли себе место файлы для контроллеров(views) и моделей(models), файлов для настройки url соотносителя, шаблонов, и статичных файлов создано не было. Далее мы покажем, как их создать (они не обязательны для каждого сайта, но нужны в данном примере).

После создания приложения, нам нужно зарегистрировать его в проекте, чтобы различные утилиты затрагивали его своим действием (например при добавлении моделей в базу данных). Приложения регистрируются добавлением их названий в список INSTALLED_APPS в настройках проекта(который, как мы помним, называется settings.py). 

Откройте файл locallibrary/locallibrary/settings.py и найдите в нём список INSTALLED_APPS . Затем добавьте новую строку в конец списка, как показано полужирным ниже.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'catalog.apps.CatalogConfig', 
]

Новая строка указывает на файл конфигурации приложения (CatalogConfig), который был создан в /locallibrary/catalog/apps.py , когда вы создали приложение.

Примечание: Легко заметить, что в INSTALLED_APPS уже подключено большое количество приложений (и объектов MIDDLEWARE, ниже в файле конфигурации). Они добавляют поддержку админ-панели Django и, как следствие, огромное количество функциональности (включая сессии, аутентификацию и прочее).

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

Мы будем использовать базу данных SQLite для этого проекта, потому что не предполагаем большое количество одновременных запросов на неё, а ещё потому, что для её настройки совсем не надо ничего делать! Вы можете видеть, что база данных уже настроена в settings.py (подробная информация указана ниже):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Так как мы используем SQLite, то нам не нужно ничего делать.

Давайте продолжим!

Файл settings.py так же применяется и для некоторых других настроек, но на данном шаге имеет смысл поменять разве что TIME_ZONE — это значение должно быть представлено строкой, указанной в списке часовых поясов tz (колонка TZ в таблице, в строке временной зоны, которая вам нужна). Измените TIME_ZONE на одну из строк из таблицы, которая отвечает вашему часовому поясу. Например:

TIME_ZONE = 'Europe/Moscow'

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

  • SECRET_KEY. Это секретный ключ, который используется Django для поддержки безопасности сайта. Если вы раскроете этот ключ в процессе разработки кому-либо, то необходимо будет его сменить (возможно считать его с какого-либо файла на сервере или переменной окружения) когда будете размещать проект на сервер.blog/’, include(‘blog.urls’))
    «»»
    from django.urls import path
    from django.contrib import admin

    urlpatterns = [
    path(‘admin/’, admin.site.urls),
    ]

    URL соотношения хранятся в переменной urlpatterns, которая является списком функций path(). Каждая path() функция или ассоциирует шаблон URL с контроллером(views) или же его с другим таким списком (во втором случае, первый URL становится «базовым» для других, которые определяются в дочернем списке). Список urlpatterns инициализирует список функции, которая, например, соотносит admin/ с модулем admin.site.urls , который содержит собственный файл-соотноситель.

    Добавьте строчки, приведённые ниже в низ файла urls.py , чтобы добавить новый элемент в список urlpatterns. Этот элемент содержит url() который направляет запросы с URL catalog/ к модулю  catalog.urls (файл с относительным путём /catalog/urls.py).

    
    from django.urls import include
    from django.urls import path
    urlpatterns += [
         path('catalog/', include('catalog.urls')),
    ]
    

    Теперь давайте перенаправим корневой URL нашего сайта (например 127.0.0.1:8000) на URL 127.0.0.1:8000/catalog/; это единственное приложение, которое мы собираемся использовать, поэтому это вполне разумно. Чтобы это использовать, нам понадобится специальная функция (RedirectView), которая принимает первым параметром новый относительный URL на который следует перенаправлять (/catalog/) когда указанный в функции url() адрес  соотносится с адресом запроса (корневой URL, в данном случае).

    Добавьте следующие строчки, тоже в конец файла:

    
    from django.views.generic import RedirectView
    urlpatterns += [
        path('', RedirectView.as_view(url='/catalog/', permanent=True)),
    ]

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

    Добавьте последнюю часть в конец файла:

    # Используйте static() чтобы добавить соотношения для статических файлов
    # Только на период разработки
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    Примечание: Существуют различные способы дополнения списка urlpatterns (в примере мы просто добавляли объект, используя оператор += чтобы чётко разделить изначальный и дописанный код). Вместо этого, мы могли бы добавить соотношения внутрь определения переменной:

    urlpatterns = [   path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),path('',
    RedirectView.as_view(url='/catalog/', permanent=True)), ] +
    static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    Кроме того, мы добавили import вниз файла (from django.urls import include) ,чтобы видеть, что мы добавили, но обычно все инструкции import добавляются в верхнюю часть файла.

    Напоследок, создайте файл urls.py внутри папки catalog, и добавьте следующий код, чтобы определить (пустой) urlpatterns. Сюда мы будем добавлять наши URL соотношения, по мере разработки сайта. 

    from django.urls import path
    from . import views
    
    
    urlpatterns = [
    
    ]
    

    На этом, мы создали прототип сайта. Пока сайт ничего не умеет делать, но стоит запустить его, чтобы убедиться, что мы ничего не сломали. 

    До этого, нам предстоит впервые запустить  миграцию базы данных. Это обновит нашу базу данных и добавит туда необходимые модели (и уберёт некоторые предупреждения, которые были бы показаны при попытке запуска).

    Запуск миграций базы данных

    Django использует Объектный Соотноситель Связей (ORM) чтобы соотносить определения моделей в Django приложении со структурами данных, которые используются базой данных. Когда мы меняем наши модели, Django отслеживает изменения и может создать файлы миграций (в папке /locallibrary/catalog/migrations/) чтобы применить соответствующие структуры данных к базе, чтобы та соответствовала модели.

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

    python3 manage.py makemigrations
    python3 manage.py migrate
    

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

    Команда makemigrations создаёт (но не применяет) миграции для всех приложений, которые установлены в ваш проект (вы так же можете указать в конце имя конкретного приложения, чтобы создать миграции только для него). Это даёт вам возможность проверить код перед тем, как их применить — когда вы станете хорошо разбираться в Django, то сможете даже менять их!

    Команда migrate применяет созданные миграции к базе (Django отслеживает, какие миграции были созданы для данной базы).

    Примечание: Посмотрите раздел Миграции в документации Django чтобы получить информацию о менее распространённых командах для управления миграциями.

    Запуск сайта

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

    Примечание: Отладочный веб-сервер не настолько функционален и производителен, для постоянного размещения , но это самый простой способ запустить свой сайт на Django и проверить его на наличие ошибок. По умолчанию, он разместит сайт на вашем компьютере (http://127.0.0.1:8000/), но вы так же можете указать различные компьютеры в вашей сети для этой цели. Для получения большего количества информации загляните в раздел django-admin и manage.py: отладочный сервер документации Django.

    Запустите веб-сервер, используя команду runserver (в той же папке, что и manage.py):

    python3 manage.py runserver
    
     Performing system checks...
    
     System check identified no issues (0 silenced).
     September 22, 2016 - 16:11:26
     Django version 1.10, using settings 'locallibrary.settings'
     Starting development server at http://127.0.0.1:8000/
     Quit the server with CTRL-BREAK.
    

    Когда сервер запустится, вы сможете посетить сайт по адресу http://127.0.0.1:8000/ в вашем веб-браузере. Вы должны увидеть страницу с ошибкой, навроде этой:

    Не волнуйтесь! Эта страница должна появиться и сообщить нам, что мы ещё не настроили ни одной страницы в модуле catalogs.urls (на который мы были перенаправлены запросили корневой URL сайта). 

    Примечание: Показанная выше страница открывает нам одно из замечательных свойств Django — автоматические отчёты об ошибках. На экране с ошибкой отображается множество полезной информации, когда страница не найдена, или ошибка была вызвана кодом. В данном случае, мы видим, что запрошенный URL  не соответствует ни одному шаблону (из указанных). Подобные отчёты будут выключены при DEBUG=False (когда мы разместим приложение в Сеть), в этом случае будет показана менее информативная, но более дружелюбная к пользователю страница(которую вам надо будет создать — прим. переводчика).

    На данном этапе, мы поняли, что Django работает должным образом! 

    Примечание: вам следует перезапускать миграцию и заново тестировать сайт, после того как вы делаете важные изменения. Поверьте, это не займёт много времени!

    Папка catalog/ содержит файлы контроллеров(views), моделей(models), и других частей приложения. Просмотрите эти файлы. 

    Как было написано выше, URL соотноситель для админ-панели был подключён в файле urls.py. Войдите в административную часть и посмотрите, что произойдёт (вы можете найти URL из соотношения выше).

    Теперь вы создали полноценный скелет веб-приложения, который теперь вы можете расширить url соотносителями, контроллерами(views) и моделями(models).

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

    Глава 1, раздел 4: DjangoBook по-русски

    Как читать эту книгу

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

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

    Приложения даны в качестве справочника. Они, вместе со свободной
    документацией на http://www.djangoproject.com/,
    являются тем, что вы будете периодически просматривать при
    разработке.

    Необходимые знания в программировании

    Читатели должны понимать основы процедурного и
    объекто-ориентированного программирования: управляющие
    структуры (if, while,
    for), структуры данных (списки, хэши/словари),
    переменные, классы и объекты.

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

    Необходимые знания языка Python

    Если рассматривать ядро среды, Django является просто набором библиотек, написанных на языке Python. При разработке сайта с помощью Django вам придётся писать код на языке Python, который использует эти библиотеки. Изучая Django важно понимать как программировать на языке Python и понимать как работают библиотеки Django.

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

    Если у вас нет опыта разработки на языке Python, ничего
    страшного. Его легко изучить и прикольно использовать!
    Несмотря на то, что эта книга не включает в себя обучение
    языку Python, она подчёркивает возможности языка и его
    функциональность. Мы рекомендуем прочитать официальные
    документы по языку на http://docs.python.org/tut/. Мы также рекомендуем
    прочитать книгу Марка Пилгрима Вглубь языка Python, опубликованную издательством Apress и
    переведённую Денисом Откидач.

    Требуемая версия Django

    Данная книга описывает серию релизов 1.х, т.е. версии 1.0, 1.0.2 или 1.1.

    Разработчики Django обеспечивают обратную совместимость с
    основными версиями. Это означает, что если вы пишете
    приложение для Django 1.0, оно будет работать с версиями 1.1,
    1.2, 1.9 и со всеми другими версиями, которые начинаются с
    «1».

    Когда Django достигнет версии 2.0, может потребоваться переписать ваше приложение — но до этого ещё далеко. Например, путь до версии 1.0 занял три года. (Это очень похоже на политику совместимости принятую для языка Python — код, написанный для Python 2.0, работает в 2.6, но это не гарантируется для Python 3.0).

    Принимая описанное, данная книга охватывается все версии Django 1.x и должна прослужить вам приличное время.

    Получение помощи

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

    • Список рассылки django-users является
      местом где тысячи пользователей задают и отвечают на
      вопросы. Зарегистрируйтесь свободно на http://www.djangoproject.com/r/django-users.

    • IRC канал является местом где пользователи могут
      общаться друг с другом, помогая в реальном
      времени. Присоединяйтесь к каналу #django
      в FreeNode IRC.

    Плюсы и минусы Django

    Вы разработчик? Тогда очевидно, что вам нужен лучший язык программирования. Но определение лучшего языка и инструментов – непростая задача. Слышали ли вы о Django? Или, по крайней мере, знакомы ли вы с его минусами и плюсами? Используя данный инструмент, кажется, что все становится на свои места очень быстро и эффективно.

    Почему Django?

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

    Django в центре внимания

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

    Python и его популярность

    Хорошо известно, что Python является одним из самых используемых языков программирования благодаря простоте в изучении, дизайну и гибкости, что делает его практически совершенным языком программирования. Существует ряд причин, по которым его можно называть такими громкими словами.

    • Простота в изучении
    • Чистота и читаемость
    • Разносторонность
    • Быстрота написания
    • Цельный дизайн

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

    Плюсы Django

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

    • Быстрота: Django был разработан, чтобы помочь разработчикам создать приложение настолько быстро, на сколько это возможно. Это включает в себя формирование идеи, разработку и выпуск проекта, где Django экономит время и ресурсы на каждом из этих этапов. Таким образом, его можно назвать идеальным решением для разработчиков, для которых вопрос дедлайна стоит в приоритете.
    • Полная комплектация: Django работает с десятками дополнительных функций, которые заметно помогают с аутентификацией пользователя, картами сайта, администрированием содержимого, RSS и многим другим. Данные аспекты помогают осуществить каждый этап веб разработки.
    • Безопасность: Работая в Django, вы получаете защиту от ошибок, связанных с безопасностью и ставящих под угрозу проект. Я имею ввиду такие распространенные ошибки, как инъекции SQL, кросс-сайт подлоги, clickjacking и кросс-сайтовый скриптинг. Для эффективного использования логинов и паролей, система пользовательской аутентификации является ключом.
    • Масштабируемость: фреймворк Django наилучшим образом подходит для работы с самыми высокими трафиками. Следовательно, логично, что великое множество загруженных сайтов используют Django для удовлетворения требований, связанных с трафиком.
    • Разносторонность: менеджмент контента, научные вычислительные платформы, даже крупные организации – со всем этим можно эффективно справляться при помощи Django.

    Есть вопросы по Python?

    На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

    Telegram Чат & Канал

    Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

    Паблик VK

    Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

    PHP против Python

    PHP можно назвать самым сильным конкурентом Python, оба эти языка очень популярны. Однако у Django есть парочка роялей в кустах, которыми не может похвастаться PHP. Нередко эти преимущества являются решающими для разработчиков. Выбор между PHP и Python – не самая простая задача, надеюсь следующие сравнения помогут вам сделать объективный вывод:

    1. Лучший дизайн: PHP был разработан специально для веб разработки, но Django базируется на более надежном языке. Хороший код проще написать в Python, в сравнении с PHP.
    2. Python и долгосрочность: PHP очень хорош в краткосрочной перспективе. Однако, когда вы проходите начальную фазу, вам может понадобиться язык с более глубокими возможностями. Здесь Python выступает в роли явного фаворита.
    3. Лучший Веб Фреймворк: Рынок наполнен великим множеством замечательных фреймворков. Однако это не касается долгосрочной ценности. И Django в данном случае является явным победителем. Хотя и PHP может похвастаться со своими Laravel, Yii, Symfony.
    4. Фактор читаемости: PHP следует классическому подходу, но у Python более строгие правила идентификации. Отсюда выбирайте, что лучше.
    5. Простой синтаксис: написание кода в Python происходит намного проще и быстрее.
    6. Инструменты для лечения багов: пакеты Python содержат все необходимые инструменты для исправления неполадок.
    7. Управление пакетам: в Python это реализовано весьма эффективно: вы можете писать, читать и делиться пакетами таким образом, что другие разработчики могут использовать их в других приложениях.
    8. Говорим Python, подразумеваем «Общее Назначение»: В то время как PHP используется для веб разработки, Python может быть использован для различных целей, также стоит отметить, что вы можете работать как онлайн, так и оффлайн.

    Минусы

    Минусы всегда идут за руку с плюсами. Давайте рассмотрим, почему Django нельзя назвать безупречным:

    • Использование шаблона маршрутизации с указанием URL
    • Django слишком монолитный
    • Все базируется на ORM Django
    • Компоненты развертываются совместно
    • Необходимо умение владеть всей системой для работы

    Подведем итоги

    Существует очень много плюсов и минусов Django, не упомянутых в данной статье, однако, когда рассматривается проект с дедлайном, использование Django для решения поставленной задачи – грамотное решение. Более того, для ускорения рабочего процесса, есть возможность установить пользовательскую кастомную конфигурацию. Ранее, когда разработка кода требовала большого количества времени, такая возможность позволила заметно упростить этот процесс. Стоимость разработки снизилась практически на 80%, а необходимость в аутсорсинге вообще отпала. Но погодите, делает ли это Django лучшим? Что-ж, в некоторых странах определенно попытаются передать Django на аутсорс. Кому? Скорее всего, низкоквалифицированным и дешевым разработчикам.

    Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

    E-mail: [email protected]

    Образование
    Universitatea Tehnică a Moldovei (utm.md)

    • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
    • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

    ТОП-5 книг по Django (Python) на русском языке – Библиотека программиста


    Просмотров 10.6k.
    Обновлено

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

    Django. Адриан Головатый, Джейкоб Каплан-Мосс

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

    Издание написано для тех, кто имеет навыки программирования и знаком с принципами Python и веб-разработкой.

    Достоинства:

    • отлично структурирована;
    • радует достаточное количество теории и примеров;
    • хорошее качество книги;
    • позволяет изучить Django на начальном этапе, а в дальнейшем использовать книгу, как справочник.

    Недостатки:

    • некачественный перевод;
    • некоторая информация уже устаревшая.

    Изучаем Python. Эрик Мэтиз

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

    Издание отлично подходит для новичков.

    Достоинства:

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

    Недостатки:

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

    Django. Уэсли Чан, Джефф Форсье, Пол Биссекс

    Полное руководство начинается с основ Django на Python, рассматриваются основные компоненты и способы их взаимодействия. Далее уже даются практические знания: методы разработки приложений и более сложные темы, такие как администрирование и тестирование сайтов.

    Авторы делятся секретами использования Django, применяя большое количество примеров и объяснений к ним.

    Достоинства:

    • понятный стиль написания;
    • легко воспринимается информация;
    • подробное описание без воды;
    • много полезной информации для версии Django 1,0 или 1,2.

    Недостатки:

    • много устаревшей информации.

    Django: практика создания Web-сайтов на Python. Владимир Дронов

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

    Достоинства:

    • пошаговые инструкции по разработке веб-сайтов;
    • адекватная цена.

    Недостатки:

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

    Django 2 в примерах. Антонио Меле

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

    Достоинства:

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

    Недостатки:

    • неточности и ошибки в примерах кода;
    • новичкам нужно иметь представления о языке Python.

    Выводы

    1. Лучшая книга в библиотеке начинающего программиста для старта в изучении Python и Django – «Изучаем Python» Эрик Мэтиз.
    2. Лучшее руководство для тех, кто уже имеет навыки программирования – «Django» Адриан Головатый, Джейкоб Каплан-Мосс.
    3. «Django 2 в примерах» — подойдет широкому кругу аудитории. Отличная книга для тех, кто хочет освоить работу с Django и узнать новые подходы.

    Делитесь хорошими книгами по Django не попавшими в эту подборку в комментариях!

    Подборка практических и обучающих материалов по Python и Django для начинающих

    Мы перевели для вас статью, которая будет полезна для начинающих Python/Django разработчиков. Вам не обязательно проходить каждый курс полностью. Лучше начинать с самых простых уроков и практики. И еще один важный совет: всякий раз, когда вы изучаете новый тип данных, класс или функцию, не забудьте проверить официальную документацию. В один прекрасный день вам не понадобится ничего, кроме нее.

    Итак, вот что мы рекомендуем начинающим разработчикам:

    Теория Python

    Книги

    Онлайн учебники

    • Codecademy — это действительно хорошее место, чтобы начать учиться с нуля. Но после обновления обучающих программ, задания стали слишком простыми. Еще одним недостатком является небольшое количество инструкций по Django;
    • Coursera — замечательный ресурс, где вы будете работать с кодом на регулярной основе. Но, если начинаете курс новичка, вам следует подождать (иногда несколько недель) начала расширенных тем;
    • Tutorialspoint — лучше всего описывать, как упрощенную версию официальной документации. Здесь вы можете найти описание большинства базовых понятий, ключевых терминов и некоторых встроенных библиотек. Описание краткое и четкое. Для большинства новичков это отличный вариант, но это не то место, где стоит начинать с нуля;
    • SoloLearn — предлагает набор мобильных обучающих программ, включая Python. Действительно приятные курсы для тех, кто не может заснуть без серфинга с мобильного телефона. Теоретическая часть хороша, однако практические задачи иногда кажутся труднопреодолимыми. Некоторые примеры еще сложнее и не помогут вам в реальной ситуации. Большая часть приложения — это простые тесты.

    Теория Django

    • Tango with Django — руководство для начинающих по Django и веб-разработке в целом. Существует несколько частей книги для разных версий Django, начиная от версии 1.5 до более новых версий, таких как 1.9 и 1.10;
    • Djangobook — несмотря на простоту официальной документации Django, эта книга является отличным пошаговым руководством. Она основана на версии Django 1.8 LTS. Книга находится где-то между упрощенной версией официальной документации и пошаговым руководством по созданию вашего первого веб-приложения на Django;
    • «The Definitive Guide to Django: Web Development Done Right» — книга Джейкоба Каплан-Мосса, Адриана Холоваты. В ней описывается устаревшая версия Django 1.1, однако она затрагивает все основные понятия, и вы сможете найти ответ на любой вопрос, связанный с Django. Являясь одним из создателей Django, он описывает материал в ясной и простой форме.

    После обретения уверености в фундаментальных принципах Django, обязательно посетите эти ресурсы:

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

    Когда вы ознакомитесь с основами, мы рекомендуем прочитать следующие книги:

    Электронные рассылки

    С кого брать пример

    Полезные статьи с нашего сайта

    Перевод статьи «Python and Django Beginner’s Pack: books, tutorials, newsletters»

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

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

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

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

    Завершено
    Django следует философии «Батареи включены» и предоставляет почти все, что разработчики могут захотеть сделать «из коробки».Поскольку все, что вам нужно, является частью одного «продукта», все это работает безупречно вместе, следует последовательным принципам проектирования и имеет обширную и актуальную документацию.
    Универсальный
    Django может использоваться (и использовался) для создания почти любого типа веб-сайтов — от систем управления контентом и вики-сайтов до социальных сетей и новостных сайтов. Он может работать с любой клиентской структурой и может доставлять контент практически в любом формате (включая HTML, RSS-каналы, JSON, XML и т. Д.).Сайт, который вы сейчас читаете, построен на Django!

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

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

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

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

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

    Код

    Django написан с использованием принципов и шаблонов проектирования, которые способствуют созданию поддерживаемого и повторно используемого кода. В частности, он использует принцип «Не повторяйся» (DRY), что исключает ненужное дублирование и сокращает объем кода. Django также способствует группированию связанных функций в повторно используемые «приложения» и, на более низком уровне, группирует связанный код в модули (в соответствии с шаблоном Model View Controller (MVC)).
    Портативный
    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 превратился в универсальную платформу, которая способна разрабатывать любой тип веб-сайтов.

    Нет готового и окончательного измерения популярности серверных фреймворков (хотя вы можете оценить популярность, используя такие механизмы, как подсчет количества проектов 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 обычно группируют код, который обрабатывает каждый из этих шагов, в отдельные файлы:

    • URL-адреса: Хотя можно обрабатывать запросы от каждого отдельного URL-адреса с помощью одной функции, гораздо удобнее написать отдельную функцию просмотра для обработки каждого ресурса.Устройство сопоставления URL-адресов используется для перенаправления HTTP-запросов в соответствующее представление на основе URL-адреса запроса. Устройство сопоставления URL-адресов также может сопоставлять определенные шаблоны строк или цифр, которые появляются в URL-адресе, и передавать их в функцию просмотра в виде данных.
    • Представление: Представление — это функция обработчика запросов, которая принимает HTTP-запросы и возвращает HTTP-ответы. Представления получают доступ к данным, необходимым для удовлетворения запросов, через модели и делегируют форматирование ответа шаблонам .
    • Модели: Модели — это объекты Python, которые определяют структуру данных приложения и предоставляют механизмы для управления (добавления, изменения, удаления) и запроса записей в базе данных.
    • Шаблоны: Шаблон — это текстовый файл, определяющий структуру или макет файла (например, HTML-страницы), с заполнителями, используемыми для представления фактического содержимого. Представление может динамически создавать HTML-страницу, используя шаблон HTML, заполняя ее данными из модели .Шаблон можно использовать для определения структуры любого типа файла; это не обязательно должен быть HTML!
    Примечание

    Django называет эту организацию архитектурой «Шаблон представления модели (MVT)». Он имеет много общего с более знакомой архитектурой Model View Controller.

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

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

    Преобразователь URL-адресов обычно хранится в файле с именем urls.py . В приведенном ниже примере средство сопоставления ( шаблонов URL ) определяет список сопоставлений между маршрутами (определенные шаблоны URL ) и соответствующими функциями просмотра. Если получен HTTP-запрос, URL-адрес которого соответствует указанному шаблону, будет вызвана соответствующая функция просмотра и передана запрос.

      urlpatterns = [
        путь ('admin /', admin.([0-9] +) / $ ', views.best),
    ]
      

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

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

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

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

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

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

     
    
    из django.http import HttpResponse
    
    def index (запрос):
        
        
        
        return HttpResponse ('Привет от Django!')
      
    Примечание

    Немного Python:

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

    Представления обычно хранятся в файле с именем views.py .

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

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

    Приведенный ниже фрагмент кода показывает очень простую модель Django для объекта Team . Класс Team является производным от моделей класса django.Модель . Он определяет название команды и уровень команды как поля символов и определяет максимальное количество символов, которые должны быть сохранены для каждой записи. team_level может быть одним из нескольких значений, поэтому мы определяем его как поле выбора и обеспечиваем сопоставление между отображаемыми вариантами и сохраняемыми данными вместе со значением по умолчанию.

     
    
    из моделей импорта django.db
    
    class Team (models.Model):
        team_name = models.CharField (max_length = 40)
    
        TEAM_LEVELS = (
            ('U09', 'До 9 лет'),
            («До 10 лет», «до 10 лет»),
            («U11», «До 11 лет»),
            ...
        )
        team_level = models.CharField (max_length = 3, choices = TEAM_LEVELS, по умолчанию = 'U11')
      
    Примечание

    Немного Python:

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

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

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

    Модель Django предоставляет простой API запросов для поиска в связанной базе данных. Это может соответствовать нескольким полям одновременно с использованием разных критериев (например, точно, без учета регистра, больше, чем и т. Д.) И может поддерживать сложные утверждения (например, вы можете указать поиск по командам U11, у которых есть команда имя, которое начинается на «Fr» или заканчивается на «al»).

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

     
    
    из django.shortcuts import render
    из команды импорта .models
    
    def index (запрос):
        list_teams = Team.objects.filter (team_level__exact = "U09")
        context = {'youngest_teams': list_teams}
        вернуть рендер (запрос, '/ best / index.html ', контекст)
      

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

    Отрисовка данных (шаблоны HTML)

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

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

  • .

     
    
    
    
    
      
       Домашняя страница 
    
    
      {% if youngest_teams%}
        
      {% за команду в youngest_teams%}
    • {{команда.team_name}}
    • {% endfor%}
    {% еще %}

    Нет доступных команд.

    {% endif%}

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

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

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

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

    Django для веб-разработки (курс обучения) — Real Python

    Learning Path ⋅ Навыки: Django, веб-разработка, проекты

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

    Django для веб-разработки

    Learning Path ⋅ 16 ресурсов

    Курс

    Начало работы с Django: создание приложения-портфолио

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

    Курс

    Авторизация Django View: ограничение доступа

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

    Курс

    Структурирование приложения Python

    Этот курс представляет собой справочное руководство по распространенным макетам приложений Python и структурам проектов для приложений командной строки, веб-приложений и т. Д.

    Курс

    Миграции Django 101

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

    Учебник

    Углубляясь в миграции Django

    В этом пошаговом руководстве по Python вы не только поближе познакомитесь с новой системой миграции Django, интегрированной в Django, но и пройдетесь по самим файлам миграции.

    Курс

    Django перенаправляет

    Узнайте все, что вам нужно знать о перенаправлениях HTTP в Django. От низкоуровневых деталей протокола HTTP до высокоуровневых способов работы с ними в Django.

    Учебник

    Моделирование полиморфизма в Django с помощью Python

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

    Учебник

    Что нужно знать для управления пользователями в Django Admin

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

    Курс

    Настройка администратора Django

    Узнайте, как настроить администратора Django с помощью Python. Вы будете использовать объекты AdminModel для добавления столбцов отображения, вычисления значений, ссылки на ссылающиеся объекты, а также для поиска и фильтрации результатов. Вы также будете использовать переопределение шаблона, чтобы получить полный контроль над HTML-кодом администратора.

    Учебник

    Как написать устанавливаемое приложение Django

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

    Учебник

    Как перенести модель Django в другое приложение

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

    Курс

    Создание HTTP API с помощью Django REST Framework

    Этот курс подготовит вас к созданию HTTP API с помощью Django REST Framework. Фреймворк Django REST (DRF) — это набор инструментов, созданный на основе веб-фреймворка Django, который уменьшает объем кода, который вам нужно написать для создания интерфейсов REST.

    Получили отзыв об этом методе обучения?

    «Просмотреть все пути обучения

    Как изучить Django (2020)

    • Уилл Винсент

    • 30 нояб.2020 г.

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

    HTML / CSS

    веб-страниц состоят из HTML и CSS. Знание того, как создавать и развертывать статические веб-сайты, — это , настоятельно рекомендуется , прежде чем начинать попытки Django. К счастью, есть несколько хороших бесплатных ресурсов, включая FreeCodeCamp; Shay How’s Learn to Code HTML & CSS серии, а также HTML и CSS — это сложно.

    HTML сам по себе не , что глубокая тема.Вы можете выучить основы за день, а усвоить большую часть того, что вам понадобится, — за неделю. К сожалению, CSS намного сложнее. Вам не нужно становиться экспертом по CSS, но вы должны знать, как он взаимодействует с HTML, и уметь немного стилизовать свои статические веб-сайты. На практике большинство разработчиков полагаются на фреймворк CSS, такой как Bootstrap или Tailwind, а в компаниях разработчики Django обычно вообще не трогают интерфейс, поэтому базовое понимание — это все, что вам нужно.

    Интернет

    Также необходимо иметь фундаментальное представление о том, как на самом деле работает всемирная паутина.У Mozilla, вероятно, есть лучшее руководство под названием «Как работает Интернет», которое является частью более крупной и также рекомендованной серии «Learn Web Development».

    Питон

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

    Очевидно, что чем больше, тем лучше, но я бы сказал, что вам не нужно быть экспертом по Python, чтобы использовать Django.Как минимум, вы должны понимать, как устанавливать пакеты Python (например, Django), использовать виртуальную среду, импорт и классы. RealPython — популярный источник руководств по Python, но если вы ищете книгу, Ускоренный курс Python охватывает основы и дает достаточно знаний, чтобы приступить к работе с самим Django.

    Базы данных и SQL

    Веб-сайт, управляемый базой данных, полагается на базы данных, поэтому вы должны иметь общее представление о том, как работает SQL, а также о принципах проектирования баз данных.У Khan Academy есть бесплатное руководство по SQL, а на этом сайте есть Учебное пособие по проектированию баз данных для начинающих, которое также стоит прочитать, чтобы понять первичные ключи, отношения «один ко многим» и нормализацию базы данных.

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

    Git

    Последнее предварительное условие — знание Git, системы контроля версий, которую вы будете использовать в каждом проекте.Технически он не является частью Django, но вы можете использовать его в любом серьезном или профессиональном проекте. У Github есть руководство по Git, которое является хорошим первым шагом. Вы должны понимать, как установить git в новый репозиторий, делать коммиты и отправлять / вытягивать код в удаленный репозиторий, скорее всего, GitHub, GitLab или BitBucket.

    Учебники по Django

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

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

    Книги

    Для лечения длиной в книгу, Django для начинающих и Django Crash Course — дружественные процедуры для начинающих.Для промежуточного / продвинутого уровня рекомендуется использовать две части Django, Django для профессионалов и Speed ​​Up Your Django Tests.

    Видео

    На Django есть много видеороликов на YouTube, и качество сильно различается. Хорошие варианты включают серию Кори Шафера, а также серию Traversy Media. JustDjango — это платный вариант — это качественный контент.

    Подкасты

    На данный момент существует только один еженедельный подкаст на Django под названием Django Chat, который ведет создатель LearnDjango.com и сотрудник Django Карлтон Гибсон. Django Riffs — это многообещающая серия, и Running in Production часто содержит контент, специфичный для Django.

    Конференции и встречи

    Лучший способ узнать больше и стать частью сообщества — это посетить DjangoCon или местную встречу. DjangoCon US отложен до 2021 года, хотя DjangoCon Africa запланирован на ноябрь, а DjangoConEurope и PyCon Australia проводят виртуальные конференции. Кроме того, в большинстве крупных городов проводятся встречи Django ежемесячно, а в наши дни даже виртуально.

    Форум Django

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

    Заключение

    В конце концов, изучение Django — это постоянное стремление. Фреймворк продолжает развиваться, как и более широкая всемирная паутина, в первую очередь с текущим введением функций Async в Django 3.0+. Поскольку каждые 9 месяцев планируется выпуск крупных новых выпусков, сейчас самое лучшее время для изучения Django.

    Мои любимые курсы по изучению Django для начинающих в 2021 году | автор: javinpaul | Javarevisited

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

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

    Django — это мощный фреймворк Python, который используется для создания веб-приложений, этот инструмент считается одним из лучших фреймворков веб-разработки для разработки веб-сайтов, которые работают с базами данных, такими как системы управления контентом (CMS), управление взаимоотношениями с клиентами (CRM), Object Relational Mapping (ORM) и многое другое.

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

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

    Не теряя больше времени, вот лучшие курсы Django для веб-разработки.Список содержит практические онлайн-курсы обучения на основе проектов от Udemy и Pluralsight для изучения среды веб-разработки Django.

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

    Вот основные вещи, которые вы узнаете в этом курсе:

    • Как использовать Python, даже если вы новичок.
    • Создание веб-сайта о недвижимости с помощью Django и PostgreSQL.
    • Создание виртуальной среды и развертывание веб-приложения.

    Созданный Брэдом Трэверси, одним из моих любимых инструкторов Udemy, этот курс Python и Django включает более 11 часов практических видео и множество примеров, таких как создание веб-сайта по недвижимости.

    Вот ссылка, чтобы присоединиться к этому курсу — Python Django Dev To Deployment

    27 лучших идей проектов Python Django — Мастер веб-разработки с Python

    Бесплатный курс Python с 25 проектами в реальном времени Начните сейчас!

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

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

    Надеюсь, что ваши основные концепции Python и Django ясны. Но, если вы хотите пересмотреть концепции Django, у нас есть 50+ руководств по Django для освоения фреймворка.

    Сегодня мы делимся некоторыми интересными идеями проектов Django, чтобы получить практические знания о фреймворке.

    ХОРОШИЕ НОВОСТИ !!

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

    1. Идеи проекта Python
    2. Python Django (Веб-разработка) Идеи проекта
    3. Идеи проекта разработки игр Python
    4. Идеи проекта искусственного интеллекта Python
    5. Идеи проекта машинного обучения Python
    6. Идеи проекта Python Data Science
    7. Проект глубокого обучения Python Идеи
    8. Python Идеи проекта компьютерного зрения
    9. Python Идеи проекта Интернета вещей

    Идеи проекта Django для начинающих

    1.Отправка электронных писем с помощью Python

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

    2. Инструмент запросов Regex

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

    3. Система входа в систему в Django

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

    4. Генератор текста в HTML

    Идея проекта — Это интересный проект, в котором вы можете создать интерфейс, в котором вы можете указать текст, и с помощью одной кнопки он будет генерировать веб-страницу HTML с некоторыми стилями. . Это полезно для быстрого создания онлайн-документации по проектам.

    5. Счетчик калорий Python

    Идея проекта — Счетчик калорий — отличный способ отслеживать все калории, которые вы сжигаете каждый день.Пользователь может добавить всю еду, которую он ест, и приложение будет считать калории. Мы также можем добавить функцию, позволяющую пользователям добавлять свои ежедневные тренировки, бег и бег трусцой, чтобы рассчитать, сколько калорий они сожгли.

    6. Приложение Django Chat

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

    7. Python Password-Safe

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

    8. Django Hospital Management System

    Идея проекта — Создание веб-приложения для управления работой больницы. В системе должен быть интерфейс для создания учетной записи врача и добавления записей обо всех деталях пациента.Он также должен иметь легкий доступ и технику поиска записей.

    9. Автоматическая публикация твитов

    Идея проекта — В этом проекте вы можете создать бота для автоматической публикации твитов с помощью API Twitter. Вы также можете использовать другой API для случайного получения цитат, смешных строк и т. Д. Для публикации в Twitter. Обязательно установите интервал в несколько часов между каждым твитом.

    10. Syntax Highlighter

    Идея проекта — Создайте веб-сайт, где у вас будет интерфейс для написания кода Python.Синтаксис кода должен автоматически выделяться программой. Это отличный инструмент, который помогает при кодировании.

    Пора поработать над идеями проекта — проектами Python с исходным кодом.

    11. Система управления библиотекой Python

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

    Промежуточные идеи проекта Django

    1. Программирование сокетов на Python

    Идея проекта — Программирование сокетов — это способ установления сети соединения между клиентом и сервером. Мы можем легко отправлять данные в любом направлении, что позволяет нам создавать приложения. Программирование сокетов в основном используется в чат-приложениях.

    2. Приложение Todo в Django

    Идея проекта — Проект предполагает создание приложения todo. В приложении todo пользователь может отслеживать все, что он / она планирует сделать, и создавать список.Затем они могут обновить список, когда задача будет завершена. Создайте красивое приложение с базовыми Html, CSS и JavaScript и разместите его на сервере localhost, используя платформу Django или Flask.

    3. Словарное веб-приложение

    Идея проекта — Проект словарного веб-приложения потребует от вас использования различных API из Интернета. Проект должен уметь передавать значение слов вместе с антонимами и синонимами.

    Научитесь создавать REST API в Django с помощью Django REST framework.

    4. Железнодорожная справочная система

    Идея проекта — Индийская железнодорожная система предоставила нам API от railapi.com, с помощью которого мы можем собрать всю информацию о статусе поезда, номере PNR и т. Д. в реальном времени. Идея этого проекта состоит в том, чтобы создать веб-приложение с использованием railapi, которое предоставит нам всю информацию о пользовательских запросах, связанных с железной дорогой.

    5. Python Resume Builder

    Идея проекта — Веб-приложение для создания резюме поможет студентам автоматически генерировать резюме, заполнив данные в форме, и оно создаст PDF-файл для пользователей, чтобы загрузить отформатированное резюме.

    6. Приложение для заметок

    Идея проекта — В этом проекте вам нужно создать красивый интерфейс для приложения для заметок. Вы должны предоставить пользователю функциональные возможности для добавления, редактирования и удаления заметок из приложения. Также предоставьте возможность добавлять изображения в заметки.

    7. Приложение Django Quiz

    Идея проекта — Создайте веб-сайт, на котором пользователь может играть в викторину. Вы должны добавить несколько вопросов, и пользователь может выбрать параметры и отправить тест.В конце концов, мы должны подсчитать общий балл викторины.

    8. Веб-приложение для блога

    Идея проекта — Создание веб-сайта блога — отличный проект для демонстрации в вашем портфолио. Настройте дизайн блога в соответствии с его темой, и вы можете предоставить функции добавления блога для администратора, а другие зрители смогут читать ваши блоги и оставлять комментарии.

    Продвинутые идеи проекта Django

    1. Интернет-магазин одежды с оплатой

    Идея проекта — Еще один хороший проект — создать веб-приложение для интернет-магазина.Пользователи могут покупать товары в магазине, поэтому нам также необходимо настроить платежный модуль для обработки транзакций.

    2. Интерактивные веб-карты

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

    3. Приложение социальной сети Django

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

    4. Django Pinterest clone

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

    5. Веб-приложение агрегатора новостей

    Идея проекта — Веб-приложение агрегатора новостей можно создать, объединив веб-сканеры и веб-приложения.Агрегатор новостей помогает собирать данные или новостные статьи с нескольких веб-сайтов.

    Исходный код: Python Django News Aggregator Project

    6. Веб-приложение на основе местоположения Django

    Идея проекта — Вы можете создать приложение для навигации и картографии, которое использует карту для измерения расстояния между двумя местами и вами. может отображать кратчайшее расстояние для путешествия. Система навигации полезна для приложений доставки товаров, они также могут показывать маршруты к различным магазинам рядом с покупателем.

    7. Система управления контентом

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

    8. Веб-сайт для видеочатов

    Идея проекта — Веб-сайт, на котором вы можете общаться с друзьями и проводить с ними видеочат один на один. Было бы весело, и вы поймете, как мы можем отправлять видеопотоки через соединение.

    Резюме

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

    Взломайте свое интервью по Django с первой попытки, задав вопросы для интервью по Django от DataFlair.

    Надеюсь, вам понравилась статья DataFlair с идеями проекта Django. Если вы хотите добавить больше идей, связанных с проектом Django, сообщите нам об этом в разделе комментариев.

    Happy Learning😃

    5 лучших курсов для изучения Django Framework в 2021 году

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

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

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

    Дело не в том, что Django — единственный фреймворк в Python для веб-разработки, у вас также есть Flask и Web2Py, но Django дает преимущество в виде полнофункционального фреймворка. Напротив, Flask — это микро / меньший фреймворк.

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

    5 лучших курсов Django для изучения веб-разработки с использованием Python

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

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

    1. Django 3 — веб-сайты полного стека с веб-разработкой на Python

    Это один из немногих лучших онлайн-курсов, посвященных Django 3, последней версии Django. В этом курсе Django Ник Уолтер научит вас создавать 3 потрясающих веб-сайта с использованием HTML5, CSS3 и Bootstrap 4 для Frontend и Python и Django для серверной части.

    Вот ключевые навыки, которые вы изучите в этом курсе:
    1. Как создавать красиво оформленные веб-сайты с помощью Bootstrap 4
    2. Основы Django, такие как базовые представления функций, маршрутизация URL, модели, шаблоны и многое другое!
    3. Как опубликовать свой веб-сайт в Интернете с помощью Python Anywhere
    4. Как создать полнофункциональный веб-сайт менеджера списка Todo, на котором пользователи могут создавать учетные записи
    5. Работа с формами
    6. Как создать систему входа в систему пользователей

    Говоря о социальное доказательство, этот курс Django 3 в среднем имеет 4.7 оценок от около 1125 участников, и более 5112 студентов записались на этот курс, что является отличным показателем. Если вы ищете курс Django 3, я настоятельно рекомендую вам этот курс.

    2. Python и Django Full Stack Web Developer Bootcamp

    Это один из лучших онлайн-курсов по изучению Django для полнофункциональной веб-разработки в Udemy. Этот курс создан Хосе Портилла, одним из лучших инструкторов Udemy и авторов курса Python 3 Bootcamp, вероятно, самого популярного курса Python на планете.

    Хосе очень хорошо осведомлен и следует стилю обучения на начальных курсах, что отлично подходит для изучения новых навыков, таких как Django и полнофункциональная веб-разработка. Курс научит вас не только Django, но и другим связанным технологиям, таким как HTML, CSS, Bootstrap, Javascript, jQuery и Python 3, необходимым для полнофункциональной веб-разработки.

    Вот основные вещи, которые вы изучите в этом курсе:
    1. Как создать полнофункциональный веб-сайт с помощью Full-Stack с Django 1.11
    2. Как использовать HTML и CSS для создания структуры и стиля веб-сайтов
    3 .Как с помощью Bootstrap сделать ваш сайт красивым
    4. Как использовать Javascript для взаимодействия с местами во Front-End
    5. Как использовать возможности Python для написания кода ваших веб-приложений
    6. Как использовать Django для кодирования бэкэнд.

    Говоря о социальном доказательстве, этому курсу доверяют более 80 000 студентов, и в среднем он имеет 4,5 оценки от почти 20 000 участников, что говорит о качестве этого курса.

    3. Django 2.2 и Python | Усовершенствованный учебный курс для веб-разработки

    Хотя предыдущий курс Django от Jose Portilla — отличный курс, он охватывает только Django 1.11, а теперь и более широко используемый Django 2.2. Что ж, теперь у нас даже есть Django 3, но все же Django 2.2 — самая популярная версия Django в реальном мире, и именно здесь этот курс помогает.

    В этом курсе вы изучите Django 2.2, и Python, создавая реальные проекты, а именно три веб-сайта с нуля. Вы будете кодировать как интерфейс, так и серверную часть, а также опубликуете свой сайт в Интернете с помощью Digital Ocean, одного из популярных облачных провайдеров среди разработчиков.

    Вот основные навыки, которые вы изучите в этом курсе:
    1.Python и Django с нуля
    2. Концепции Django, такие как представления на основе функций и классов, маршрутизация URL-адресов, модели, Gunicorn и т. Д.
    2. Основы веб-разработки
    3. Как создавать собственные сайты-портфолио
    4. Как развернуть свой веб-сайт в Интернете с помощью Digital Ocean
    5. Как использовать Bootstrap (интерфейсный фреймворк, упрощающий веб-дизайн)
    6. Как подключить Django к таким базам данных, как SQLite и Postgres.
    6. Понимание Django
    7. Как создать клон Product Hunt с использованием Python и Django

    Говоря о социальном доказательстве, этот курс создан Ником Уолтером, и более 18 000 программистов записались на его курс.Он также имеет в среднем 4,5 оценки от почти 4500 участников, что впечатляет и говорит о качестве курса.

    4. Создайте серверный REST API с помощью Python и Django — Advanced

    Если вы ищете продвинутый курс по Python, Django и веб-разработке, то это отличный курс для вас. Этот курс создан Марком Винтерботтомом и Брук Резерфорд, и он научит вас создавать расширенный REST API с помощью Python, Django REST Framework и Docker с использованием разработки через тестирование (TDD).

    Это отличный курс для всех, кто хочет стать разработчиком полного цикла Python, поскольку вы также узнаете, как создавать REST API с помощью Python и Django; вы узнаете о Docker и узнаете, как использовать TDD для создания качественного программного обеспечения и своевременного завершения проекта.

    Вот ключевые вещи, которые вы изучите в этом курсе:
    1. Как настроить собственный локальный сервер разработки с помощью Docker
    2. Как создать проект Python с помощью TDD
    3. Как создать REST API с расширенными возможностями такие функции, как загрузка и просмотр изображений
    4.Как кодировать многоразовый бэкэнд
    5. Передовые принципы, такие как PEP-8 и модульные тесты
    6. Как настроить Travis-CI для автоматизации проверки кода

    Говоря о социальном доказательстве, этому продвинутому курсу Django доверяют 11 991 слушатель во всем мире, и он имеет в среднем 4,5 оценки от около 2407 участников, что потрясающе.

    5. Django: начало работы, Рейндерт-Ян Эккер

    Это базовый курс по изучению Django для начинающих. В этом курсе Pluralsight Django вы изучите основы веб-разработки с помощью фреймворка Django.Он научит вас всему, что нужно, чтобы стать продуктивным веб-разработчиком на Python.

    Вот основные навыки, которые вы изучите в этом курсе:
    1. Как создавать привлекательно оформленные страницы с помощью шаблонов Django.
    2. Как добавить сопоставления URL-адресов для этих страниц и обработать взаимодействие пользователя с формами.
    3. Как хранить данные и манипулировать ими, Django предлагает мощный модельный API и интерфейс администратора.

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

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

    Всего за 29 долларов в месяц или 299 долларов в год (скидка 14%) вы можете получить доступ к более чем 7000 онлайн-курсов, созданных экспертами по новейшим технологиям. Кроме того, вы также можете использовать их 10-дневный бесплатный пропуск , чтобы смотреть этот курс БЕСПЛАТНО.

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

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

    Прочее Python Статьи по программированию вам может понравиться

    Спасибо, что прочитали эту статью. Если вы найдете эти курсы Django и Python полезными, поделитесь ими со своими друзьями и коллегами. Если у вас есть какие-либо вопросы или отзывы, напишите нам.

    P. S. — Если вы хотите изучить Django Framework в 2021 году, но ищете бесплатный онлайн-курс по Django, вы также можете проверить Попробовать Django 2.2 — Веб-разработка с Python 3.6+ курс на Удеми. Это совершенно бесплатно, и вам просто нужна учетная запись Udemy, чтобы присоединиться к этому курсу. К этому курсу уже присоединились более 36 000 разработчиков.

    Введение | Django для начинающих

    Добро пожаловать в Django для начинающих , проектный подход к обучению веб-разработке с помощью веб-среды Django. В этой книге вы создадите пять все более сложных веб-приложений, начиная с простого приложения Hello, World , заканчивая приложением Pages , приложением Message Board , приложением Blog с формами и учетными записями пользователей, и, наконец, приложение Newspaper , которое использует настраиваемую модель пользователя, интеграцию электронной почты, внешние ключи, авторизацию, разрешения и многое другое.К концу этой книги вы почувствуете себя уверенно, создавая свои собственные проекты Django с нуля, используя современные передовые практики.

    Django — это бесплатный веб-фреймворк с открытым исходным кодом, написанный на языке программирования Python. «Веб-фреймворк» — это программное обеспечение, которое абстрагирует многие общие проблемы, связанные с созданием веб-сайта, такие как подключение к базе данных, обеспечение безопасности, учетные записи пользователей и т. Д. В наши дни большинство разработчиков полагаются на веб-фреймворки, а не пытаются создать веб-сайт с нуля.В частности, Django был впервые выпущен в 2005 году и с тех пор постоянно развивается. Сегодня это одна из самых популярных доступных веб-фреймворков, используемая крупнейшими веб-сайтами в мире — Instagram, Pinterest, Bitbucket, Disqus, но при этом достаточно гибкая, чтобы быть хорошим выбором для стартапов на ранних стадиях и создания прототипов личных проектов.

    Эта книга регулярно обновляется и включает последние версии как Django, так и Python. Он также использует Pipenv для управления пакетами Python и виртуальными средами, хотя использование Pip также отлично работает.На протяжении всего времени мы будем использовать передовой опыт сообществ Django, Python и веб-разработчиков, включая тщательное тестирование.

    Почему Джанго

    Веб-фреймворк — это набор модульных инструментов, которые абстрагируют большую часть трудностей и повторений, присущих веб-разработке. Например, большинству веб-сайтов требуются одни и те же базовые функции: возможность подключаться к базе данных, устанавливать маршруты URL-адресов, отображать контент на странице, правильно обеспечивать безопасность и т. Д. Вместо того, чтобы воссоздавать все это с нуля, программисты на протяжении многих лет создали веб-фреймворки на всех основных языках программирования: Django и Flask в Python, Rails в Ruby и Express в JavaScript среди многих, многих других.

    Django унаследовал подход Python «с включенными батареями» и включает готовую поддержку для общих задач веб-разработки, в том числе:

    • аутентификация пользователя
    • тестирование
    • моделей баз данных, форм, URL-маршрутов и шаблонов
    • интерфейс администратора
    • Повышение безопасности и производительности
    • поддержка нескольких баз данных

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

    Напротив, несколько популярных фреймворков, в первую очередь Flask в Python и Express в JavaScript, используют подход «микрофреймворк». Они предоставляют только минимум, необходимый для простой веб-страницы, и оставляют на усмотрение разработчика установку и настройку сторонних пакетов для репликации основных функций веб-сайта. Такой подход обеспечивает большую гибкость для разработчика, но также дает больше возможностей для ошибок.

    По состоянию на 2019 год Django находится в активной разработке более 14 лет, что делает его опытным ветераном программного обеспечения.Миллионы программистов уже использовали Django для создания своих сайтов, что, несомненно, хорошо. Веб-разработка — это сложно. Нет смысла повторять один и тот же код и ошибки, когда большое сообщество блестящих разработчиков уже решило эти проблемы за нас.

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

    Почему эта книга

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

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

    Для работы с этой книгой вам не нужен опыт работы с Python или веб-разработки. Он намеренно написан так, чтобы даже новичок мог следить за ним и чувствовать магию написания собственных веб-приложений с нуля. Однако, если вы серьезно относитесь к карьере в области веб-разработки, вам в конечном итоге придется потратить время на правильное изучение Python, HTML и CSS.Список рекомендуемых ресурсов для дальнейшего изучения включен в Заключение.

    Структура книги

    Мы начнем с того, что рассмотрим, как правильно настроить локальную среду разработки в Глава 1 . В этой книге мы используем новейшие инструменты: самую последнюю версию Django (3.1), Python (3.8) и Pipenv для управления нашими виртуальными средами. Мы также представляем командную строку и обсуждаем, как работать с современным текстовым редактором.

    В Глава 2 мы создаем наш первый проект, минимальное приложение Hello, World , которое демонстрирует, как создавать новые проекты Django.Поскольку внедрение передовых методов работы с программным обеспечением важно, мы также сохраним нашу работу с помощью Git и загрузим копию в удаленный репозиторий кода на GitHub.

    В Глава 3 мы создаем, тестируем и развертываем приложение Pages , которое представляет шаблоны и представления на основе классов. Шаблоны — это то, как Django позволяет разработку DRY (Don’t Repeat Yourself) с помощью HTML и CSS, в то время как представления на основе классов довольно эффективны, но требуют минимального количества кода. Мы также добавляем наши первые тесты и развертываем в Heroku, у которого есть уровень бесплатного пользования, который мы будем использовать в этой книге.Использование поставщиков платформы как услуги, таких как Heroku, превращает процесс разработки из болезненного и трудоемкого процесса во что-то, для чего требуется всего несколько щелчков мышью.

    В Глава 4 мы создаем наш первый проект на базе базы данных, приложение Message Board . Django предоставляет мощную ORM, которая позволяет нам писать сжатый Python для наших таблиц базы данных. Мы рассмотрим встроенное приложение администратора, которое обеспечивает графический способ взаимодействия с нашими данными и может даже использоваться в качестве системы управления контентом (CMS), аналогичной WordPress.Конечно, мы также пишем тесты для всего нашего кода, храним удаленную копию на GitHub и развертываем на Heroku.

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

    Оставшаяся часть книги, Главы 8–16 , посвящена созданию надежного сайта Newspaper , начиная с введения в пользовательские модели в Глава 8 , передовой практике Django, которая редко рассматривается в учебных пособиях. Глава 9 описывает аутентификацию пользователя, Глава 10 добавляет Bootstrap для стилизации, а Главы 11–12 реализуют сброс и изменение пароля по электронной почте. С Главами 13-15 мы добавляем статьи и комментарии к нашему проекту вместе с соответствующими разрешениями и авторизациями.Мы даже изучаем некоторые приемы настройки администратора для отображения растущих данных. И в Глава 16 , переменные среды вводятся вместе с надлежащими методами развертывания.

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

    Хотя вы можете выбирать главы для чтения, структура книги продумана. Каждое приложение / глава представляет новую концепцию и подкрепляет прошлые учения.Я настоятельно рекомендую читать книгу по порядку, даже если вы хотите пропустить ее вперед. Последующие главы не охватывают предыдущий материал так же глубоко, как предыдущие главы.

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

    Макет книги

    В этой книге есть много примеров кода, которые обозначены следующим образом:

      # Это код Python
    print (Привет, мир)
      

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

      def make_my_website:
        ...
        print ("Все готово!")
      

    Мы также будем часто использовать консоль командной строки (начиная с Главы 1: Начальная установка) для выполнения команд, которые принимают форму префикса $ в традиционном стиле Unix.

    Результатом этой конкретной команды будет следующая строка:

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

      $ echo "привет, мир"
    Привет мир
      

    Официальный исходный код

    Полный исходный код всех глав можно найти в официальном репозитории GitHub. Хотя лучше всего набирать весь код вручную, если вы все же застряли с примером кодирования или видите странную ошибку, обязательно сверьте свой код с официальным репозиторием.А если вы все еще застряли, попробуйте скопировать и вставить официальный исходный код. Распространенной ошибкой является небольшая разница между белыми интервалами, которую практически невозможно обнаружить невооруженным глазом.

    Заключение

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

    Перейдите к главе 1: Первоначальная настройка.

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *