Создаем книгу для записей «Телец». Часть первая

Как перемещать и копировать листы или их данные в Excel

В этом курсе:

  • Создание книги
    Статья
  • Вставка и удаление листов
    Статья
  • Как перемещать и копировать листы или их данные в Excel
    Статья
  • Печать листа или книги
    Статья
  • Использование Microsoft Excel в качестве калькулятора
    Статья
  • Автоматическое заполнение ячеек листа данными
    Статья
  • Создание раскрывающегося списка
    Статья

Перемещение и копирование листов или данных листов

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

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

Перемещение листа в книге

Щелкните ярлычок листа и перетащите его в нужное место.

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

Копирование листа в одной книге

Удерживая нажатой клавишу CTRL, перетащите ярлычок листа на нужное место.

Щелкните ярлычок листа правой кнопкой мыши и выберите команду Переместить или скопировать.

Установите флажок Создать копию.

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

Нажмите кнопку ОК.

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

Перемещение листа

Перетащите ярлычок листа в нужное место в строке ярлычков.

Копирование листа

Нажмите и удерживайте клавишу OPTION.

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

Важно: Отпустите сначала кнопку мыши, а затем — клавишу OPTION.

Перемещение листа в другую книгу

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

Откройте книгу, в которую требуется переместить лист.

В меню Окно щелкните книгу, в которую входит перемещаемый лист.

Щелкните лист, который требуется скопировать в другую книгу.

В меню Правка выберите пункты Лист > Переместить или скопировать лист.

В меню В книгу выберите книгу, в которую требуется переместить лист.

Совет: Чтобы создать новую книгу и переместить в нее лист, выберите вариант новая книга.

В поле Перед листом выберите лист, перед которым нужно вставить перемещаемый лист, или вариант переместить в конец.

Нажмите кнопку ОК.

Копирование листа в другую книгу

Откройте книгу, в которую требуется скопировать лист.

В меню Окно щелкните книгу, в которую входит копируемый лист.

Выберите лист, который требуется скопировать.

В меню Правка выберите пункты Лист > Переместить или скопировать лист.

В меню В книгу выберите книгу, в которую требуется скопировать лист.

Совет: Чтобы создать новую книгу и переместить в нее лист, выберите вариант новая книга.

В поле Перед листом выберите лист, перед которым нужно вставить скопированный лист, или вариант переместить в конец.

Установите флажок Создать копию.

Нажмите кнопку ОК.

Изменение цвета ярлычка листа

Изменение цвета ярлычков листов может облегчить отслеживание информации в больших книгах.

Удерживая клавишу CONTROL, щелкните ярлычок листа.

Выберите команду Цвет ярлычка и укажите нужный цвет.

В Excel в Интернете можно дублировать (или копировать) книги. Просто щелкните правой кнопкой мыши имя ярлычка в нижней части листа и выберите команду Дублировать.

Примечание: При дублировании листа, содержащего диаграмму, рисунок или фигуру, может появиться сообщение об ошибке. В этом случае лист можно продублировать вручную.

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

Выделите все данные на листе.

Сочетания клавиш. Нажмите клавиши CTRL+ПРОБЕЛ на клавиатуре, а затем клавиши SHIFT+ПРОБЕЛ.

Скопируйте все данные на листе, нажав CTRL+C.

Щелкните знак плюса (+), чтобы добавить пустой лист.

Щелкните первую ячейку на новом листе и нажмите CTRL+V, чтобы ввести данные.

Примечание: При вставке ячеек на новый лист примененное к ним условное форматирование будет потеряно.

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

Чтобы переместить или скопировать книгу в другую книгу в Excel в Интернете, выполните указанные Excel в Интернете.

Выделите все данные на листе.

Сочетания клавиш: нажмите клавиши CTRL+ПРОБЕЛ, а затем клавиши SHIFT+ПРОБЕЛ.

Скопируйте все данные на листе, нажав CTRL+C.

Откройте книгу, в которую необходимо вставить данные, и щелкните знак «плюс» ( +) в строке состояния, чтобы добавить новый пустой лист.

Щелкните первую ячейку нового таблицы, а затем нажмите CTRL+V, чтобы ввести данные на этот.

Примечание: При вставке ячеек в другую книгу примененное к ним условное форматирование будет потеряно.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Как айтишнику издать свою книгу. Часть 2 Самиздат: сколько стоит свобода

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

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

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

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

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

А теперь к делу.

Основной набор действий по созданию книги примерно одинаков, что в классических издательствах, что на площадках самиздата или в ином аналогичном свободном плаванье.

Краткое флоу, как сделать книгу в самиздате (на примере Ridero, выбранном по описанным в предыдущей статье плюсам/минусам):

О каждом шаге в деталях:

Загрузка

Ресурсозатратность зависит от выбранной площадки. На Ридеро можно загрузить свою книгу как файл (DOC, DOCX, TXT, RTF и ODT; в т.ч. с иллюстрациями, до 40Mb), импортировать из Goоgle Docs или даже получить тексты по ссылке из Blogger, LiveJournal, Стихи.ру, Проза.ру и ряда других онлайн-ресурсов. Для любителей экстрима — можно набирать онлайн в их собственном редакторе. На практике проблем с импортом .docx не возникло.

«Литрес: Самиздат» поддерживает загрузку файлов DOCX и FB2, до 70Mb. Выдвигает при этом жесткие требования к оформлению файлов: структура, переносы и символы концов абзацев, настройки форматирования в Microsoft Word. — многостраничная инструкция прилагается. Просто так «скормить» имевшийся .docx-файл книги не удалось.

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

Редактура

Призвана сделать слог гармоничнее, текст без речевых ошибок, стилистику автора усилить, предложения переформулировать — в целом, предполагает более серьезные вмешательства, чем правки запятых и орфографии. Пунктуация и прочие школьные правила выправляются позже корректором. Услуги же редактора гораздо дороже, варьируются от жанров и предполагают его экспертизу в данной литературной области. Поскольку мне было важно сохранить свой авторский стиль, и были небезосновательные опасения «станет хуже» — данный этап мною был опущен. В противном случае, при ценах Ридеро в 3 800 – 5000 руб. за 1 авторский лист (40 000 знаков с пробелами), редактура моей книги обошлась бы мне в 38 000 – 50 000 руб.

Корректура

Субъективно, единственный неисключаемый шаг перед любым обнародованием текста: что с заделом на печатную версию, что для выпуска только электронной книги. Подразумевает проверку на орфографию, пунктуацию, грамматику и опечатки. И хотя я сама при написании не пренебрегала исправлениями от Google Docs, уповала на 5-ку по русскому с набором прочно усвоенных правил, а также несколько раз внимательно читала текст постфактум — на каждой странице нашлось, что поправить, а то и не раз. Об этом догадываются и площадки самиздата, а поскольку вычитка все еще делается не нейронными сетями, а реальными людьми — удовольствие недешевое. Цена за 1 авторский лист варьируется от 990 руб. в «ЛитРес: Самиздате» до 1300 руб. в Ридеро. В типографиях или фрилансе можно поискать дешевле, держа в голове поправку на качество.

121. История письменности. Манускрипт Войнича

Мне корректура книги объемом 10 а.л. (немного выше среднего в своем жанре нон-фикшена) обошлась на тот момент в 11 000 руб. — дороже печати небольшого тиража в 35 экз.

В Ридеро правки предлагают внести либо на их сайте в онлайн-редакторе текста загруженной книги, но в нем вы не увидите diff, либо, если хотите отсмотреть правки, — могут сделать в .docx. Затем в режиме рецензирования через MS Word или Google Docs можно принять/отклонить предложенные изменения.

Зачем следует изучать программирование на языках Си? (Часть 1)

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

Вычитка заняла 11 дней. Общий срок в Ридеро был заявлен до 16 дней.

Сложные тексты рекомендуют вычитывать хотя бы 2 раза. То есть время-деньги повторить.

Отступление: RIP ё

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

когда нужно предупредить неверное прочтение (узнаём -> узнаем, совершённый -> совершенный);

для указания произношения малоизвестных слов;

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

В остальных случаях рекомендуется писать е.

Дизайн обложки

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

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

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

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

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

Цены от 2900 руб. за оформить вариант с имеющейся у автора картинкой до 13 900 руб. за детализированную отрисовку уникальной картинки с 4+ персонажами. Мне обошлось в 9 550 руб., за несложный сюжет по жесткому (в т. ч. проиллюстрированному моей рукой) ТЗ, включая корректорскую вычитку текстов обложки. Но понравилось.

ТЗ лицевой части, картинки для оборотной стороны и результат

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

Верстка

Как верстальщик фронтендер верстала сама в онлайн редакторе Ridero. Есть готовые довольно сбалансированные стили: наборы шрифтов и размеров. В основном время уходит на их выбор, корректную разбивку структуры, применение стилей заголовков и удаление лишних отступов. А еще — борьбу с несовершенствами мира.

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

В копилку магии онлайн редактора Ridero (а может и корректуры) пропали пустые скобки у метода toString().

Скачивание электронной книги

Если до текущего момента был шанс попользоваться площадкой бесплатно, то при попытке получить сверстанную книгу, ждал грамотно подготовленный сюрприз. Скачивание с сохранением верстки в PDF – 250 руб. за раз, то же для MOBI и FB2. Либо 700 руб. за все. Поправил опечатку — плати еще раз. Либо оформляй подписку 1000-1500 руб./мес. за безлимит. Бесплатно доступен EPUB, но им (и самостоятельными конвертациями в FB2 и MOBI) можно обойтись, если версия с версткой вам не важна.

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

Печать тиража

Стоимость экземпляра зависит от количества в тираже, больше — дешевле каждый, от числа страниц и параметров печати. На площадках самиздата все красиво — калькуляторы, настройки типа обложки, формата. В обычных типографиях возможностей (форматов, типов тиснений, ламинирования и прочих вариаций) гораздо больше. Меня вполне устраивали предлагаемые в Ridero мягкая обложка с матовой ламинацией и черно-белый текстовый блок с креплением клеем. Пробный тираж в 30 экз. обошелся в 8 334 руб. Шитый блок — дороже, твердая обложка — еще дороже. К слову, по запросу в поддержку Ridero были готовы декорировать обложку тиснением или выборочным лаком, что на сайте явно не предлагается, но и порядок цен становился уже другим.

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

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

От заказа услуги до коробки с тиражом в руках прошло 19 дней. Непосредственно исполнение без доставки заявлено в 5 рабочих дней.

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

Размещение в онлайн-магазинах

Жирный плюс площадок самиздата — возможность одной кнопкой отправить свою книгу в ЛитРес, Ozon, Amazon, AliExpress, Bookmate или другие партнерские магазины. Не нужно разбираться с тонкостями выкладки на каждый сервис. На Amazon, например, нужно конвертировать книгу их инструментами в спец. формат.

О минусах: отсутствии детальной настройки под каждую платформу и непрозрачной статистике, — писала ранее.

Вячеслав Мосунов о книге «Заметки о войне на уничтожение»

К плюсам:
+ агрегация прибыли в одном месте. На каждом сервисе есть минимальная сумма вывода в 1000-3000 руб., которую вы можете и не достичь при скромных продажах. «Накопить» на вывод в Ridero, где суммируются доходы от всех площадок, проще.
+ уплата налогов.

Т.к. по закону в РФ доходы от профессиональной писательской деятельности подлежат налогообложению, при размещении в магазинах самому или через сервисы самиздата важно обращать внимание, являются ли они налоговым агентом. Например, Ridero — являлся, у «ЛитРес: Самиздата» налоги автор выплачивает самостоятельно. Есть возможность оформить налоговый вычет в 20% за создание произведений литературы.

В ряде магазинов (Ozon, AliExpress, MyShop) поддерживается печать по требованию — т.е. можно продавать свою книгу и в бумаге. Площадка самиздата распечатает ее только при оформлении покупки.

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

Раскатку до магазинов любой правки/опечатки в описании книги через Ridero придется ждать пару месяцев или платить для ускорения.

Сетевые книжные и офлайн

Для простого автора самиздата здесь выглядит все бесперспективно или разорительно. Книжные не стремятся сотрудничать с подобными писателями. Ridero предлагает включить вашу книгу в списки, предоставляемые магазинам. Заинтересует — закажут. Попробовала, включила. Результат: ожидаемая тишина.

За 90 000 руб. можно заказать размещение на 1 мес. книги в 10 московских магазинах, лицевой выкладкой на полке. За 145 000 руб. есть возможность выбрать размещение в других городах и уже на 2 мес. А за 310 000 руб. книга может полежать 2 мес., выложенной на кубе в тематическом отделе нескольких магазинов (не в каждом из сети).

Можно даже заказать выкладку брошюр с фрагментом книги в аэропорты. Всего 115 000 – 125 руб. за 1 мес. В зависимости от зала и числа экземпляров.

Денежные и временные затраты на выпуск книги

Дополнительные мероприятия

Перевод книги на английский

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

На площадке Ridero сейчас стоимость перевода начинается от 1690 руб./стр. Страницей при этом обычно считается 1800 знаков с пробелами. Для моей книги выходило тогда порядка 370 000 руб.

Стремясь получить перевод по более адекватной для себя цене, попросила помощи одного знакомого Бюро. Несмотря на сильную лояльность по ценам — на тот момент в 400 руб./стр., меня сразу просветили, что лучше книгу или сразу переводить носителем языка читателя либо вычитывать перевод профессиональным редактором, желательно также носителем. Хороший редактор, предупредили, стоил бы 43$/час, около 2х дней работы. Получалось процентов на 35% дешевле Ridero, но все равно, прилично. На фрилансе от — 4$/час, держа в голове качество.

Запись аудиоверсии

В самиздате можно заказать за деньги (Ridero), на ЛитРесе есть отдельный проект по записи «ЛитРес: Чтец». Про мой опыт подробнее в последующей Части 4. Запись аудиоверсии книги.

Выставки

Следуя желаниям автора из самиздата быть замеченным и обрести популярность, Ridero предлагает участие на ежегодной Московской Международной Книжной ярмарке, выставке Non/fiction и прочих.

На практике с точки зрения привлечения читателей и продаж — смысла участия мало. За пакет в 19 000 руб. на ММКЯ, предполагавший печать 10 экземпляров, выкладку книги на стенде и их продажу, реализовалось 2 штуки и никакого дополнительного внимания к книге не ощутилось. Можно выступить на ярмарке с презентацией своей книги, но и порядок цены будет уже другой. На фото с итогами — людей на отдельных презентациях мало, опять же чувствуется смещение точки монетизации в сторону денег с авторов, а не читателей.

Депубликация

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

Обещанный срок снятия: в течение недели после запроса к магазинам. Фактический (неприятный сюрприз): несколько часов. Делая заявку с расчётом, что книга еще попродается несколько дней, а то и неделю, неожиданная погрешность в «лучшую» сторону оказалась не на руку 🙂

Важный нюанс: на сайтах партнеров ЛитРес (а таких немало) ознакомительные фрагменты книги (а они немаленькие) остаются опубликованными и не удаляются. «Таковы их правила».

Итого, получить в самиздате тираж в 30 экз. с приятной вёрсткой, своей обложкой и продаваться онлайн обошлось в (без дополнительных услуг и рекламы) 2 месяца и 28 900 руб.

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

Часть 3. Издательства: как попасть на полки книжных магазинов. Шансы на интерес к вам, опасные договоры и процесс выпуска книги.

Часть 4. Запись аудиоверсии книги.

Часть 5. Сколько получают авторы.

Подробнее про книгу — результат самиздата. Для сравнения:

Текущая версия — результат работы с издательством (Эксмо/Бомбора) и их дизайн. (электронная | аудио)

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

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

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

Обзор

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

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

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

Регистрация моделей

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

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

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

Создание суперпользователя

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

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

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

Вход в админ-панель и её использование

Для входа в админ-панель откройте ссылку /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). Закомментируйте исходную регистрацию (используя префикс #) этой модели:

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

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

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

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

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

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

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

Создание дизайна сайта под мобильное приложение. Урок 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Видео-семинар: Детская иллюстрация. Как создать свою первую книгу

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

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

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

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

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

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

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

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

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

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

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

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

Проверьте себя

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

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

Заключение

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

Создание оглавлений (добавление закладок) для PDF и DjVu.

Здесь объясняется, как создавать или редактировать оглавления (закладки, англ.: bookmarks, outlines) для PDF и DJVU книг. Закладки приносят большую пользу, т.к. ориентироваться в цифровой книге не так легко, как перелистывать страницы обычной бумажной книги. Без оглавления трудно найти нужное в отсканированной книге (т.к. требуется много прокручивать страницы), особенно если нет возможности поиска по тексту, что часто бывает. Цифровое оглавление позволяет:

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

Делание оглавлений в графических программах технически не трудно, но требует времени и терпения.

Для работы с оглавлениями предлагаются разные программы. Те из них, на которые не приведено ссылок, легко можно найти простым поиском по названию.

Contents

  • 1 Оглавления в PDF
    • 1.1 Наглядное редактирование
    • 1.2 Текстовое редактирование
  • 2 Оглавления в DJVU
    • 2.1 Наглядное редактирование
    • 2.2 Текстовое редактирование
    • 2.3 Индекс с поддержкой поиска в WinDjView
    • 2.4 Запись оглавлений в ДЖВУ-документы
      • 2.4.1 Преобразование и запись оглавлений, экспортированных из WinDjView

      Плетем собачку-салфетницу из газет! 1 Часть! Запись трансляции!

  • 3 Перенос оглавлений
  • 4 Объединение оглавлений
  • 5 Changing the zoom level
  • 6 На смартфонах и планшетах
  • 7 Сохранение оглавлений при перезаписи файлов на Wikimedia Commons
  • 8 Requesting outlines to be made by volunteers

Оглавления в PDF

Наглядное редактирование

  • Бесплатную версию PDF-XChange Viewer (или PDF-XChange Editor) можно использовать для работы с оглавлениями в PDF — файлах (редактирования и записи в сами книги). Эти программы переведены на русский язык.
  • Pdf & DjVu Bookmarker способен редактировать закладки в книгах PDF и DjVu и переносить их.
  • STDU Viewer позволяет вести оглавление в PDF — книгах, но не записывать его в сами книги. HandyOutliner может использоваться для встраивания оглавления из STDU Viewer в PDF — файлы. Эти программы поддерживают русский язык.
  • Известный Adobe Acrobat может использоваться для редактирования и сохранения оглавлений в ПДФ, но к сожалению, на сегодняшний день, бесплатная его версия — Adobe Reader — может только просматривать оглавления.
  • PDFtk Bookmarks Editor позволяет работать с закладками ПДФ. Он использует программу командной строки PDFTk.

Текстовое редактирование

Программы командной строки cpdf, pdftk и др. подобные позволяют считывать и записывать оглавления pdf-файлов в виде текста, в котором можно делать поиск-замену и даже использовать регулярные выражения (в таком текстовом редакторе, который это поддерживает, например, EditPad Lite).

  • Для работы с закладками в программе cpdf служат параметры командной строки:
    • -add-bookmarks (добавление закладок из подготовленного файла)
    • -list-bookmarks (отображение закладок, можно перенаправить в файл)
    • -remove-bookmarks (удаление закладок).

Оглавления в DJVU

Наглядное редактирование

  • WinDjView может вести оглавления в файлах DjVu. Оно может быть экспортировано в виде текста. Эта программа поддерживает русский язык.
  • STDU Viewer может вести оглавления в DjVu книгах и экспортировать их. HandyOutliner может использоваться для записи оглавления из STDUViewer в DjVu-файлы.
  • Для наглядного редактирования уже имеющегося оглавления в DjVu можно использовать программы Pdf & DjVu Bookmarker и Document Express Editor.
  • Другой способ: нужно сначала извлечь оглавление с помощью HandyOutliner, а затем импортировать его в STDU Viewer. Когда оглавление будет готово, нужно проделать обратный процесс: экспортировать его из STDU Viewer и записать в документ через HandyOutliner.

Текстовое редактирование

Программка DjVuOutline поддерживает очень простое текстовое редактирование DjVu-оглавлений с возможностью записи их в книги. Она имеет файл помощи на русском языке.

Можно и редактировать оглавления в текстовом виде, считанные с помощью HandyOutliner или программы командной строки djvused из пакета DjVuLibre.

Индекс с поддержкой поиска в WinDjView

WinDjView поддерживает определённый вид оглавления в виде указателя с возможностью поиска по первым буквам. Пример: File:Вейсман_А._Д._Греческо-русский_словарь_(1899).djvu

  • Этот указатель хранится в довольно интуитивной форме XML в качестве аннотации к первой страницы, которая может быть считана и записана с помощью DjVuLibre djvused:
    • djvused -e output-ant book.djvu
    • djvused -e set-ant annotation-file.txt book.djvu

Запись оглавлений в ДЖВУ-документы

  • В DjVuLibre есть программа командной строки djvused, которая может записывать оглавления в DjVu файлы. Она требует особым образом подготовленного текстового файла на вход, описанного в документации на английском языке.
  • HandyOutliner может быть использован для записи оглавлений формата STDU Viewer в DjVu-файлы.

Преобразование и запись оглавлений, экспортированных из WinDjView

  • WinDjView удобна для просмотра DjVu-файлов и делания оглавлений в них, но она не может записывать их в сами файлы, а только экпортировать их в своём особом текстовом формате.
  • Для того, чтобы записать WinDjView-оглавление непосредственно в файл DjVu, необходимо экспортировать его и преобразовать его в форму, которая читается HandyOutliner (которая принимает формат файла оглавлений STDU Viewer) или утилитой DjVuLibre djvused.
  • Формат оглавлений WinDjView не очень отличается от формата STDU Viewer. Он может быть преобразован вручную, используя некоторые замены с регулярными выражениями (в текстовом редакторе, который поддерживает регулярные выражения, как Edit Pad Lite).
  • Отсюда задача для программистов: хорошо бы, чтобы кто-нибудь создал программу, которая могла бы записывать WinDjView-оглавления в DjVu файлы или, по крайней мере, преобразовывать их в формат STDU для подачи на вход HandyOutliner. WinDjView хранит оглавления где-то в реестре.

Перенос оглавлений

  • HandyOutliner и Pdf & DjVu Bookmarker могут переносить оглавления между разными PDF- и DJVU-книгами.
  • В бесплатной версии PDF-XChange Editor можно делать копирование и вставку закладок между разными PDF-файлами, а также экспортировать и импортировать оглавления в виде неких двоичных файлов.
  • Также оглавления можно переносить в текстовом виде с помощью вышеупомянутых программ командной строки cpdf, djvused и др.

Объединение оглавлений

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

  • PDF-XChange Editor может быть использован для соединения оглавлений в PDF — файлах путём копирования-вставки или экспорта-импорта.
  • Оглавления могут быть также соединены путем извлечения их через HandyOutliner или Pdf & DjVu Bookmarker и объединения файлов оглавлений вручную в текстовом редакторе. Затем они записываются обратно этими же программами. Это возможно как для PDF, так и для DjVu.
  • Оглавления можно объединять в текстовом виде, с помощью программ командной строки cpdf, pdftk или др. подобных для PDF и djused для DjVu.

Changing the zoom level

PDF format allows to specify the zoom level for each bookmark, like ‘Fit width’, ‘Fit page’ or ‘Inherit’. It is used by viewers to open the required page with a certain zoom. It should be noted that some programs reset this to some default value. As of today, there don’t seem to be free programs that could set a given zoom level for all bookmarks at once.

На смартфонах и планшетах

Если Вы не можете проводить достаточно времени за компьютером, оглавления можно делать и на смартфоне или планшете.

Сохранение оглавлений при перезаписи файлов на Wikimedia Commons

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

Requesting outlines to be made by volunteers

If you have ideas for books that need to have outlines, but for some reason you can’t do them yourself, you can leave a request at the page Category:Commons requests. (Not to be confused with the similar page, Commons:Requests, which is for images only.)

Введение в серверную часть

Добро пожаловать на курс для начинающих по программированию серверной части сайта! В этой первой статье мы рассмотрим программирование на стороне сервера с высокого уровня, отвечая на такие вопросы, как «что это»?, «как это отличается от программирования на стороне клиента»? и «почему это так полезно»? После прочтения этой статьи вы поймёте дополнительные возможности, доступные веб-сайтам посредством программирования на стороне сервера.

Перед стартом: Базовая компьютерная грамотность. Базовое понимание, что такое веб-сервер.
Цель: Ознакомиться с тем, что такое программирование серверной части, на что оно способно и чем отличается от программирования клиентской части.

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

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

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

В современном мире веб-разработки настоятельно рекомендуется узнать о разработке на стороне сервера.

Что такое программирование серверной части сайта?

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

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

Веб-серверы ожидают сообщений с клиентскими запросами, обрабатывают их по прибытию и отвечают веб-браузеру при помощи ответного HTTP сообщения (HTTP-ответ). Ответ содержит строку состояния, показывающую, был ли запрос успешным или нет (например, «HTTP/1.1 200 OK» в случае успеха).

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

Статические сайты

Схема ниже показывает базовую архитектуру веб-сервера для статического сайта (статический сайт — это тот, который возвращает одно и то же жёстко закодированное содержимое с сервера всякий раз, когда запрашивается конкретный ресурс). Когда пользователь хочет перейти на страницу, браузер отправляет HTTP-запрос «GET» с указанием его URL.

Сервер извлекает запрошенный документ из своей файловой системы и возвращает HTTP-ответ, содержащий документ и успешный статус (обычно 200 OK). Если файл не может быть извлечён по каким-либо причинам, возвращается статус ошибки (смотри ошибки клиента и ошибки сервера).

Одинаково ли программирование серверной части и клиентской?

Динамические сайты

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

Динамический сайт может возвращать разные данные для URL-адреса на основе информации, предоставленной пользователем или сохранёнными настройками, и может выполнять другие операции, как часть возврата ответа (например, отправку уведомлений).

Большая часть кода для поддержки динамического веб-сайта должна выполняться на сервере. Создание этого кода известно, как «программирование серверной части» (или иногда «программирование бэкенда»).

Схема ниже показывает простую архитектуру динамического сайта. Как и на предыдущей схеме, браузеры отправляют HTTP-запросы на сервер, затем сервер обрабатывает запросы и возвращает соответствующие HTTP-ответы.

Запросы статических ресурсов обрабатываются так же, как и для статических сайтов (статические ресурсы — это любые файлы, которые не меняются, обычно это: CSS, JavaScript, изображения, предварительно созданные PDF-файлы и прочее).

Запросы динамических данных отправляются (2) в код серверной части (показано на диаграмме как Веб-приложение). Для «динамических запросов» сервер интерпретирует запрос, читает необходимую информацию из базы данных (3), комбинирует извлечённые данные с шаблонами HTML и возвращает ответ, содержащий сгенерированный HTML (5, 6).

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

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

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

Код клиентской части написан с использованием HTML, CSS и JavaScript — он запускается в веб-браузере и практически не имеет доступа к базовой операционной системе (включая ограниченный доступ к файловой системе).

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

Код серверной части может быть написан на любом количестве языков программирования — примеры популярных языков серверной части включают в себя PHP, Python, Ruby, C# и NodeJS (JavaScript). Код серверной части имеет полный доступ к операционной системе сервера, и разработчик может выбрать какой язык программирования (и какую версию) он хотел бы использовать.

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

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

На заметку: Фреймворки клиентской части часто используются для ускорения написания кода клиентской части, но вы также можете решить писать весь код руками; на самом деле, написание кода руками может быть более быстрым и эффективным, если вам нужен небольшой простой веб-сайт UI.

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

Что можно сделать в серверной части?

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

Компании, такие как Amazon, используют программирование серверной части для построения исследовательских результатов для товаров, формирования целевого предложения, основанного на предпочтениях клиента и предыдущих покупках, упрощения заказов и т. д. Банки используют программирование серверной части, чтобы хранить учётную информацию и позволять только авторизованным пользователям просматривать и совершать транзакции. Другие сервисы, такие как Facebook, Twitter, Instagram и Wikipedia используют бэкенд, чтобы выделять, распространять и контролировать доступ к интересному контенту.

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

Эффективное хранение и доставка информации

Представьте, сколько товаров доступно на Amazon, и представьте, сколько постов было написано на Facebook? Создание статической страницы для каждого товара или поста было бы абсолютно неэффективным.

Программирование серверной части позволяет вместо этого хранить информацию в базе данных и динамически создавать и возвращать HTML и другие типы файлов (например, PDF, изображения, и т. д.). Также есть возможность просто вернуть данные (JSON, XML, и т. д.) для отображения, используя подходящий фреймворк клиентской части (это уменьшает загрузку процессора на сервере и количество передаваемых данных).

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

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

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

  1. Зайдите на Amazon или в другой интернет-магазин.
  2. Введите в поиск несколько ключевых слов и заметьте, как структура страницы не изменилась, тогда как результаты изменились.
  3. Откройте два или три разных товара. Заметьте, что они имеют схожую структуру и внешний вид, но содержимое для разных товаров было вставлено из базы данных.

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

Настраиваемый пользовательский опыт взаимодействия

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

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

На заметку: Google Maps сохраняет вашу историю поиска и посещений. Часто посещаемые или часто вводимые в поиск локации выделяются больше, чем остальные.

Результаты поиска Google оптимизируются на основе предыдущего поиска.

  1. Перейдите в поиск Google.
  2. Произведите поиск по слову «футбол».
  3. Теперь попробуйте ввести «любимое» в поисковой строке и понаблюдайте, как работают подсказки автозаполнения поиска.

Стечение обстоятельств? Нет!

Контролируемый доступ к контенту

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

Как сделать книгу своими руками: печать, сшивка, сборка

  • Социальные сети, такие как Facebook, позволяют пользователям полностью контролировать свои данные, но только своим друзьям разрешать просматривать или комментировать их. Пользователь определяет, кто может просматривать его данные и, более того, чьи данные появляются на его стене. Авторизация — центральная часть опыта взаимодействия.
  • Сайт, на котором вы находитесь прямо сейчас, контролирует доступ к контенту: статьи видны всем, но только авторизованные пользователи могут редактировать контент. Чтобы проверить это, нажмите на кнопку «Редактировать» в верхней части страницы, и, если вы авторизованы, вы увидите редакторский интерфейс, а если нет — вас перенаправит на страницу авторизации.

На заметку: Рассмотрим другие реальные примеры, где доступ к контенту контролируется. Например, что вы можете увидеть, если зайдёте на сайт вашего банка? Авторизуйтесь через вашу учётную запись, и какую дополнительную информацию вы можете просматривать и редактировать? Что за информацию вы можете увидеть, которую может редактировать только банк?

Хранение информации о сессии/состоянии

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

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

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

Уведомления и средства связи

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

Вот несколько примеров:

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

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

Анализ данных

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

Например, и Amazon, и Google рекламируют товары на основании предыдущих поисков (и покупок).

На заметку: Если вы пользуетесь Facebook, зайдите на вашу стену и посмотрите на ряд постов. Заметьте, что некоторые посты не идут по порядку: в частности, посты с большим количеством «лайков» часто находятся выше по списку, чем остальные. Также взгляните на рекламу, которую вам показывают, вы вероятно увидите рекламу товаров, которые искали на других сайтах. Алгоритм Facebook для выделения контента и рекламы может казаться мистикой, но очевидно, что он зависит от ваших лайков и запросов поиска!

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

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

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

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

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

Found a problem with this page?

  • Source on GitHub
  • Report a problem with this content on GitHub
  • Want to fix the problem yourself? See our Contribution guide.

Last modified: Jul 6, 2021 , by MDN contributors