на django можно построить

Создаем своё первое веб-приложение с помощью Django

Авторизуйтесь

Создаем своё первое веб-приложение с помощью Django

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

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

Устанавливаем Django

Создаем проект

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

Создаем приложение

Определим различие между проектом и приложением. Приложение — это программа, которая что-то делает, а проект — это группа приложений.

В urls.py мы должны написать следующее:

Установка базы данных

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

Данная модель обеспечивает Django информацией, необходимой для создания схемы базы данных и database-access API для доступа к объектам. Теперь нам нужно привязать наше приложение к нашему проекту, делается это следующим образом:

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

Проверить, что сделает миграция, можно так: python manage.py sqlmigrate riddles 0001 (0001 — версия миграции, которую мы хотим проверить). На выходе мы получим:

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

Теперь дадим админу возможность изменять наши модели. Делается это так:

Вот что получится в итоге:

на django можно построить

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

Главная страница

Что нам нужно для создания главной страницы?

Теперь создадим макет для ответов:

Давайте пройдемся по каждой функции отдельно:

Теперь добавим наши функции в urls.py :

Добавим немного стилей

Немного изменим наши шаблоны:

Первая строка загружает статические файлы, потом мы используем <% static '#' %>, где # — путь к вашему файлу. Аналогичная процедура проводится и для JavaScript.

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

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

Если этот проект показался сложным, попробуйте пройти двухчасовой видеокурс. На нём вы пошагово создадите 3 веб-приложения: сокращатель ссылок, ToDo List и словарь английских слов.

Источник

Создание первого приложения на Django, часть 1¶

Давайте учиться на примере.

В этом уроке мы расскажем о создании базового приложения для голосования.

Он будет состоять из двух частей:

Если фреймворк Django установлен, вы увидите номер версии. Если нет, вы получите сообщение об ошибке «Нет модуля с именем django».

Где получить помощь:

Создание проекта¶

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

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

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

Где этот код должен находится?

Если бэкграунд написан на простом старом PHP (без использования современных фреймворков), вы, вероятно, привыкли размещать код в корневом каталоге веб-сервера (например, /var/www ). С Джанго так лучше не делать. Не стоит помещать какой-либо Python код в корневой каталог веб-сервера, потому что существует риск, что он может стать доступным для просмотра. Это не очень хорошо для безопасности сервера.

Давайте посмотрим на результат выполнения команды startproject :

Разберем, для чего нужны эти файлы и каталоги:

Сервер разработки¶

Источник

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

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

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

Выполнив несколько реальных проектов с фреймворком, вы получите много опыта и полезных знаний.

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

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

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

1. Блог на Django

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

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

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

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

Подробнее с данным проектом вы можете ознакомиться в статье «How to Create a Blog Using the Django Framework».

2. To-do приложение на Django

Создание простого и интересного to-do приложения — это отличный способ изучить новую технологию. To-do — это просто список дел или задач, которые вы планируете выполнить.

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

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

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

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

3. Клон сайта Hacker News

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

Такие проекты помогут вам разобраться во внутренней работе понравившихся вам сайтов и приложений.

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

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

4. Система входа на сайт

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

Итак, если вы этого еще не умеете, вам следует этому научиться. Мы нашли видео на YouTube, в котором вас научат, как за 10 минут создать полнофункциональную страницу входа в систему.

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

5. Портфолио разработчика

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

А как насчет реализации такого сайта на Django? Будет интересной затеей создать на Django сайт-портфолио и поместить в него все другие ваши проекты на Django. Когда будете искать работу или пойдете на собеседование, вам будет, что показать потенциальному работодателю! Это повысит ваши шансы получить желаемую работу.

Видеокурс «Building a Personal Portfolio with Django» поможет вам создать красивое личное портфолио, чтобы продемонстрировать свои навыки разработки на Python.

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

6. Чат-бот на Django

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

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

Чат-бот может определять намерения пользователя и извлекать данные и соответствующие объекты, содержащиеся в запросе пользователя. Это приносит огромную пользу бизнесу.

Создать чат-бота и реализовать его на своем сайте также можно при помощи Django.

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

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

От редакции Pythonist. Рекомендуем серию статей по теме: «Чат-бот на Python (Deep Learning + TensorFlow)».

7. «Погодное» приложение на Django

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

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

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

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

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

Описание процесса создания подобного приложения мы нашли для вас на YouTube:

8. Магазин на Django

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

Сайт Amazon имеет множество функций. Он полностью изменил наш подход к покупке или продаже товаров. Если у вас есть продукт для продажи, вы можете продавать его на eCommerce-сайтах, подобных Amazon. Но вы можете и сами создать сайт с похожим функционалом.

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

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

9. Социальная сеть на Django

Все мы пользуемся социальными сетями, верно? А вы знаете, что многие популярные сайты, такие как Instagram, YouTube, Pinterest и многие другие работают на Python и Django?

Вы тоже можете создать свою социальную сеть при помощи фреймворка Django. Если у вас есть оригинальная идея социальной сети, просто выполните этот проект и создайте свое приложение. Может, оно станет следующим Instagram или Facebook, кто знает?

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

Этот проект отлично ляжет в ваше портфолио. Надеемся, этот видеотуториал поможет вам создать собственную соцсеть.

10. Сайт для подписки на видео на Django

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

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

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

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

11. Онлайн-школа на Django

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

Выполнив этот проект, вы научитесь создавать многопользовательскую систему с помощью Django Rest Framework и React. Таким образом, вы узнаете много нового о структуре Rest Django, а также кое-что о React.

Такой проект улучшит ваши навыки и frontend-, и backend-разработки. Если вы хотите стать fullstack веб-разработчиком Django, мы рекомендуем вам заняться этим проектом. Следующий плейлист поможет вам в работе.

12. Размещение созданных вами сайтов

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

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

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

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

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

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

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

Заключение

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

Источник

Первое, что нужно сделать, запуская проект на Django

Приветствую сообщество, встала передо мной задача написать социальную сеть. А коль скоро язык программирования, которым я более-менее владею — это Python, я выбрал фреймворк Django для реализации проекта. Чтобы не тратить время на написание HTML шаблонов и CSS стилей, эти файлы я беру в интернете с пометкой Free. В основном это шаблоны от Colorlib.

Сразу оговорюсь, что использую PyCharm, поэтому могу не знать все команды из файла manage.py.

После создания проекта в среде, как и в любом Django проекте, первое, что необходимо сделать — внести изменения в файле settings.py а именно:

Далее создаём своё приложение командой

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

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

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

Если на этом этапе мы запустим сервер командой

в командной строке (в PyCharm кнопка «Запуск» или «Debug»), то получим ошибку, ведь в папке приложения файл urls.py (далее — account/urls.py) пустой.

Заполним его следующим кодом.

Теперь выйдет ошибка, потому что account/views.py пустой. Исправим.

Почти готово. Что уже сделано:

При создании проекта у нас автоматически создаётся папка ‘templates’, в ней нужно создать папку my_app, внутри my_app создать файл index.html. Для проверки в теге body можно записать:

и можно запускать сервер.

В итоге мы должны увидеть вот это (изображение):

на django можно построить

Если на сайте используются какие-либо CSS стили или JavaScript файлы, а это 10 из 10 случаев, то нужно их подгрузить перед строкой DOCTYPE командой

При этом в папке приложения создать папку «static», внутри держать CSS, JS и тд. А в HTML шаблоне в теге link параметре href указать абсолютный путь к файлу, например:

Итого, файл будет выглядеть вот так:

В общем-то нам этом введение и заканчивается. Дальше все действия будут похожи, только суть будет разной. Будут разные формы (тег form в HTML) в файле forms.py приложения (нужно предварительно создать этот файл), будет разная логика приложений, описанная в views.py, ну и модели в базе данных, описанные в models.py. Но сам алгоритм действий тот же самый

В блоге Metanit (ссылка внизу) хорошо описана суть Модель — Шаблон — Представление, копипастить не собираюсь, там же есть теория и про формы, и про модели.

В «Руководство Django Girls» (ссылка внизу) можно узнать подробней о расширении шаблонов HTML (крайне полезная фишка Django), о создании учётной записи администратора, о добавлении данных в созданные модели.

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

Источник

Что бы я хотел знать когда начинал изучать Django? — очень общий взгляд

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

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

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

на django можно построить

Хочу также сказать, что не являюсь профессионалом по части веб-программирования — я в этой области скорее любитель, которого интересуют исключительно личные проекты — один из них сайт по расшифровке данных ДНК тестов https://ru.bezoder.com — написан на Wagtail.

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

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

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

Думаю, понятно, что это был бы ужасный вариант программирования.

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

С таким набором задач нужно придумать какую-то концепцию.

Концепция Django

Django предлагает все разделить на «слои«. Слои отвечают за разные составляющие вашей программы. Между слоями есть связь, но она не затрудняет разработку каждого слоя изолированно (без большого внимания к другим слоям) — в Django это называется loose coupling.

Вот несколько важных слоев Django:

Тут я немного подробнее остановлюсь на слоях Модели, Виды и Шаблоны.

Слой модели

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

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

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

То есть, для таблицы выше я могу создать класс в python что-то вроде:

но как связать такой класс с базой данных? Вот тут начинается магия Django:

Вы просто используете django.db.models.Model чтобы создать класс, далее каждое поле в вашем классе это также поле, взятое из django.db.models. В моем случае поле name это текстовое поле CharField, поле karma это число float. Список всех полей (Field types) есть в официальной документации.

У каждого поля есть опции (Field options) — в коде выше опция это max_length = 20. Опции зависят от полей, которые вы создаете в базе — например, max_length = 20 это максимальная длина в символах поля name в базе. В документации по ссылке выше также описаны опции для всех полей.

На основе этого кода Django сам создаст таблицу в базе данных и то, что я назвал полями в классе будут столбцами в этой таблице. Django дает вам также удобные команды в python как получать или записывать значения в базу данных. Все делается с помощью методов models.Model а также абстракции «Manager», отвечающей в Django за коммуникацию с базой данных (в данном посте я эти абстракции детально не рассматриваю). Например, CustomUser.objects.filter(name=«Михаил») вернет всех пользователей с именем «Михаил».

Такая связь между строками в базе данных и объектами (экземплярами, инстансами) в Python называется Object-relational mapping — в нашем случае Django-ORM.

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

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

В Django вы думаете какие таблицы хотите создать в своей базе и потом просто создаете классы python по примеру выше.

Слой виды

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

Например, вы создали три модели в Django: CustomUser, Article и Advertisement с разными полями. Модель Article это статья сайта, Advertisement — это реклама, которую вы показываете на сайте, CustomUser — зарегистрированный пользователь сайта.

Когда вы захотите создать вебстраницу со статьей, то вам понадобятся данные сразу из нескольких ваших моделей — разумеется вы хотите показать все поля в самой статье (название, содержание и т.д.), вы, скорее всего, также хотите показать какую-то рекламу рядом с этой статьей. Причем реклама зависит не от содержания статьи а от поведения пользователя CustomUser. При таком подходе будет нужна какая-то логика — как собирать данные. Так, слой view в данном случае и будет подходящим местом для этой логики. Тут можно собрать все данные, которые будут относиться к тому, что вы хотите показать.

Есть два типа видов view в Django — функциональный и классовый.

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

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

Классовый вид на основе DetailView автоматически соберет всю информацию модели Article и затем отправит ее в следующий слой Django:

Слой шаблоны

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

Источник

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

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