Главная страница
Навигация по странице:

  • Исполнитель/альбом Изображение Кол-во

  • {{ album.media_type.name }} Дата релиза: {{ album.release_date|date:"d-m-Y" }}

  • {{ album.media_type.name }}

  • Мазин живых цветов и семян Django. С помощью фреймовика


    Скачать 1.95 Mb.
    НазваниеС помощью фреймовика
    Дата05.05.2023
    Размер1.95 Mb.
    Формат файлаdocx
    Имя файлаМазин живых цветов и семян Django.docx
    ТипЗадача
    #1110672

    ВВЕДЕНИЕ


    По мере развития информационных технологий в нашем мире происходит постоянное возрастание сложности информационных систем (ИС), которые создают и используют в различных областях экономики. У особенностям современных проектов ИС относятся такие как: требующие внимания моделирование и анализ данных: существование подсистем (объект системы, состязаний из элементов и представляющий собой отдельную систему) с определенными задачами и функциями; функционирование в неоднородной среде на нескольких аппаратных платформах. Создание ИС – это логически сложная, занимающая много времени и требующая сил работа, для которой необходимо обладать высокой квалификацией. Хотя довольно часто создание информационных систем нуждается не столько в навыках работы с информационными технологиями, сколько в выполнении задач при помощи интуиции и собственных основанных на искусстве и опыте методах.

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

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

    Объект исследования – магазин живых цветов и семян «Нотка».

    Предмет исследования – средства и методы создания интернет-магазинов.

    Исходя из цели, объекта и предмета были поставлены следующие задачи:

    1. ­­­­Провести аналитический обзор существующих методов решения поставленной задачи;

    2. Разработать архитектуру разрабатываемого программного обеспечения;

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

    4. Реализовать проект;

    5. Провести верификацию, валидацию и эксперимент созданного проекта.



    Раздел 1 Аналитический обзор существующих методов решения

    поставленной задачи на основе изучения литературных и других

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



    1.1 Язык программирования Python


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

    Питон – язык не новый. Его разработка началась ещё в конце восьмидесятых годов. Релиз первой версии языка произошёл в феврале 1991 года.

    Отцом-основателем Питона и, на протяжении многих лет, главным разработчиком являлся голландский программист Гвидо Ван Россум. На момент создания языка Гвидо работал в центре математики и информатики в Нидерландах. В качестве основы для Пайтона Россум взял язык программирования ABC, в разработке которого когда-то участвовал.
    Почему выбрали Python
    Нет. Он не назван в честь опасной змеи. Россум был фанатом комедийного сериала в конце 70-х. Название “Python” было взято из этого же сериала “Monty Python’s Flying Circus” (Летающий цирк Монти Пайтона).

    У Python короткий и выразительный синтаксис, особенно в сравнении с такими императивными языками, как C++, Java, C#. Изюминкой синтаксиса является то, что вложенность обозначается отступами слева, а не фигурными скобками или другими знаками. Можно сказать, что благодаря этому язык диктует хороший стиль оформления кода. Так же существует единый стандарт оформления (PEP-8) и во многих средах программирования можно привести код к этому стандарту при помощи нажатия одной комбинации клавиш.
    Простота отчасти обусловлена тем, что Питон написан на основе языка ABC, который использовался для обучения программированию.

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

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

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

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

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

    1.2 Веб-фреймворк Django


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

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

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

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

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

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

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

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

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

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

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

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

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

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



    Рисунок 1 – Группировка кода

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

    View: View (англ. «отображение») — это функция обработчика запросов, которая получает HTTP-запросы и возвращает ответы. Функция view имеет доступ к данным, необходимым для удовлетворения запросов, и делегирует ответы в шаблоны через модели.

    Models: Модели представляют собой объекты Python, которые определяют структуру данных приложения и предоставляют механизмы для управления (добавления, изменения, удаления) и выполнения запросов в базу данных.

    Templates: Template (англ. «шаблон») — это текстовый файл, определяющий структуру или разметку страницы (например HTML-страницы), с полями для подстановки, которые используются для вывода актуального содержимого. View может динамически создавать HTML-страницы, используя HTML-шаблоны и заполняя их данными из модели (model). Шаблон может быть использован для определения структуры файлов любых типов, не обязательно HTML.

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

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

    ## filename: views.py (Django view functions)

    from django.http import HttpResponse

    def index(request):

    # Получить HttpRequest — параметр запроса

    # Выполнить операции, используя информацию из запроса.

    # Вернуть HttpResponse

    return HttpResponse('Hello from Django!')


    2 Архитектура разрабатываемого программного обеспечения





    2.1 Модель предметной области


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

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

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

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

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

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

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

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

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

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

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

    • Класс Type

    • Класс Member

    • Класс Ypakovka

    • Класс Rastenie

    • Класс Prodaza

    • Класс CartProduct

    • Класс Cart

    • Класс Order

    • Класс Customer

    • Класс NotificationManager

    • Класс Notification

    • I Класс mageGallary


    2.2 Функциональные требования



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

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

    Составление вариантов использования производится на основе анализа требований к интернет-магазинам. Главными актерами в контексте программного средства являются администратор и пользователь этой системы.

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

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

    На рисунке 2 изображена диаграмма вариантов использования в нотации UML.



    Рисунок 2 - Диаграмма вариантов использования в нотации UML

    3 Структура программного обеспечения и еѐ реализации на языках программирования




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

    В проекте представлены следующие шаблоны:

    – product_detail.html, страница с подробной информацией о конкретном товаре, характеристиками, рейтингом, отзывами и т.д.;

    – cart.html, пользовательская корзина с возможностью изменять количество товаров, удалять или оформить покупку;

    – wish.html, список желаемых товаров пользователя;

    – login.html, страница авторизации пользователя;

    – registration.html, страница регистрации нового пользователя;

    Приняв во внимание требования, представленные в разделе проектирования, был разработан пользовательский интерфейс.

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

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

    Интерфейс главной страницы представлен на рисунке 3.



    Рисунок 3 – Главная страница

    На главной странице представлены продаваемые товаре. В верхней части кнопки «Авторизация» и «Регистрация». Есть возможность отсортировать цену по параметрам (min, max).

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



    Рисунок 4 – Форма регистрации

    Форма авторизации представлена на рисунке 5.



    Рисунок 5 – Форма авторизации

    Пользователь отдельно может просматривать галерею изображений выбранного товара (Рисунок 6).



    Рисунок 6 – Галерея изображений

    Также пользователь может просматривать информацию о дате изготовления, упаковки, описания и есть ли товар в наличии (Рисунок 7).



    Рисунок 7 – Информации

    После добавления в корзину в правом верхнем углу появляется информация о количестве добавленных товаров в корзину (Рисунок 8).



    Рисунок 8 – Значок корзины

    При переходе в саму корзину видим добавленные товары и общую сумму к оплате (Рисунок 9).



    Рисунок 9 – Корзина

    Форма заказа представлена на рисунке 10.



    Рисунок 10 – Форма заказа

    Можно выбрать доставку самовывозом или доставкой.

    Если товар на складе закончился, около него появляется надпись «Нет в наличии» (Рисунок 11).



    Рисунок 11 – Товара нет в наличии.

    Админ панель представлена на рисунке 12.



    Рисунок 12 – Админ панель



    Рисунок 13 – Администрирование

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

    ЗАКЛЮЧЕНИЕ



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

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

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

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

    СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ



    1. Элементы интернет-магазина [Электронный ресурс]. – URL: http://www.web.starport.ru/ecommerce/pg3_0.php (дата обращения: 23.04.23).

    2. Фаулер, М. UML. Основы / М. Фаулер, К. Скотт. – СПб: Символ-Плюс, 2002. – 192 с.

    3. Маклаков, С.В. BPwin и ERwin: СASE-средства для разработки информационных систем / С.В. Маклаков. – М.: Диалог-МИФИ, 2019. – 238 с.

    4. Лутц, М. Изучаем Python, 4-е издание / М. Лутц. – СПб: Символ-Плюс, 2010. — 1280 с.

    5. Model View Controller [Электронный ресурс]. – URL: https://ru.wikipedia.org/wiki/Model-View-Controller (дата обращения: 02.04.23).

    6. Фреймворк Django [Электронный ресурс]. – URL: http://djbook.ru/rel1.8/intro/overview.html (дата обращения: 03.04.23).

    7. Общий обзор архитектуры Django [Электронный ресурс]. – URL: http://kutaloweb.com/jeff_forcier_glava_3/obschiy_obzor_arhitektury_django/ (дата обращения: 03.04.23).

    8. Разработка сайтов с использованием HTML5 [Электронный ресурс]. – URL: https://www.prcomm-spb.ru/html-5.html (дата обращения: 12.04.23).

    9. СSS3 свойства [Электронный ресурс]. – URL: https://webformyself.com/sss3-svojstva/ (дата обращения: 12.04.23).

    10. Современный учебник Javascript [Электронный ресурс]. – URL: https://learn.javascript.ru/ (дата обращения: 14.04.23.

    11. Сравнение систем управления базами данных [Электронный ресурс]. – URL: http://devacademy.ru/posts/sqlite-vs-mysql-vs-postgresql/ (дата обращения: 14.04.23).

    12. Диаграмма вариантов использования [Электронный ресурс]. – URL: http://www.intuit.ru/studies/courses/32/32/lecture/1004 (дата обращения 14.04.23).

    13. Основы построения интерфейсов [Электронный ресурс]. – URL: http://www.info-system.ru/interface/begin_design_interface.html (дата обращения: 17.04.23).

    14. Принципы разработки интерфейса [Электронный ресурс]. – URL: http://www.cmsmagazine.ru/library/items/usability/principles-of-user-interface-design/ (дата обращения: 17.04.23).

    15. Функционально-стоимостной анализ [Электронный ресурс]. – URL: http://www.iso.ru/print/rus/document5954.phtml (дата обращения: 13.04.23).

    16. Метрики кода программного обеспечения [Электронный ресурс]. – URL: https://www.viva64.com/ru/a/0045/ (дата обращения: 24.04.23).

    17. Качественный анализ программного модуля на основе метрик кода [Электронный ресурс]. – URL: https://vunivere.ru/work18973 (дата обращения: 24.04.23).

    18. Тестирование программного обеспечения [Электронный ресурс]. – URL: http://www.dpgrup.ru/testing.htm (дата обращения: 21.04.23).

    ПРИЛОЖЕНИЯ


    Листинг

    {% extends 'base.html' %}

    {% block content %}

    class="text-center">Личный кабинет







    Заказы
    Лист ожидания






    {% endblock content %}

    html>









    написать администратору сайта