Разработка компонентов.View

 

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

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

2. Класс-наследник View (или его подклассов). В результате исследования получается метод as_view.

Выбор между подходами, формируется исходя из сложности: функциональные классы подходят для малых задач, а View-классы - для массивных решений. Для выполнения View Analysis View, Home View и Forecast View используются классы, а для RESTAPI  используются функции. AnalysisView отображен в листинге 4.

Листинг 4. Анализ Просмотр

Класс AnalysisView (LoginRequiredMixin, TemplateView):

template_name = 'analysis.html'

login_url = '/ счета / Войти /'

redirect_field_name = 'redirect_to'

defget_context_data (self, ** kwargs):

context = super (). get_context_data (** kwargs)

context ['category_picker'] = form = CategoryPicker ()

dateframe = self.request.GET.get ("dateframe", нет)

если дата == Нет:

dateframe = "день"

аналитик = аналитик (дата)

category = self.request.GET.get ("category", нет)

печать (категория)

есликатегория == Нет:

category = Category.objects.all (). first ()

еще:

category = Category.objects.get (id = категория)

data = analyst.get_top_products (категория)

context ['abc_table'] = analyst.ABC_analysis ()

context ["trend_chart"] = charts.trends_chart (данные, "Тенденции в категории: \ '" + category.name + "'", "", '', "chart-1-1")

data = analyst.get_antitop_products (категория)

context ["antitrend_chart"] = charts.trends_chart (данные, "Анти-тренды в категории: \ '" + category.name + "'", "", '', "chart-2-1")

контекст ["преобразование"] = analyst.get_conversion ()

context ["avg_order"] = analyst.get_average_order ()

возврат контекста

    Класс Анализ представляет собой наследником класса templateview, который позволяет указать образец документа. Разработчик предлагает метод get_context_data, который возвращает словарь. При получении запроса этот класс сам возвращается в шаблон контекста.

    ВPythonвозможно множественное наследование. В других языках это запрещено, т.к. неверное использование этого механизма может привести к ошибочным последствиям. В Djangoнаследовать можно только один класс-, View, но дополнительная функциональность добавляется с помощью Mixin. В анализеviewбыл использован Mixin.Для входа в систему требуетсяMixin.Доступ к пользователям не может быть выполнен в системе. Указывается login_url, URLк странице входа, а такжеredirect_to_field. Поэтому сохраняютсяURL-адреса, позволяющие пользователю получить доступ к странице логина, после входа в систему.

    Методget_context_data (self, * args, ** kwargs) — это метод, который возвращает контекст, словарь данных для представления. К ним относятся значения не только видов, но и классов, которые описывают графики и формы.

    На листинге 6 показан пример View на основе функции

Листинг 6.

@login_required (login_url = '/ счета / Войти')

@csrf_exempt

@renderer_classes ((JSONRenderer,))

defproduct_list (запрос):

 «»»

 Список всех продуктов

«»»

ifrequest.method == 'GET':

products = Product.objects.all ()

сериализатор = ProductSerializer (продуктов, много = True)

вернуть JsonResponse (serializer.data, safe = False)

        

    Как видно из листинга, функция product_list (запрос) обрабатывает запрос request и возвращает  в кейс типа JsonResponse. Объект запроса сохраняет в себе информацию о запросе, об HTTP-методе запроса (request.Method).

Эта функция обрабатывает только метод GET. Когда получен GET Запрос, функция достает из базы данных все данные о продуктах и возвращает их в виде JSON-файла, который получился после применения Product Serializer, сериализатора для объектов класса Product.

Содержание файла View.ru показано в приложении С.

 

Функции для работы с данными. Методы моделей.

 

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

· Категория (сategory)

o get_top_products– получить сортированный массив из topsize самых лучших товаров заказанный dateframe («день», «месяц», «год»).

o get_antitop_products (self, topsize, dateframe) – получить сортированный массив из topsize самых плохоп родаваемых товаров заказанный date_frame.

· Товар (Product)

o get_revenue (self, count) –вернуть стоимостьcountэкземпляров продукта.

o is_category (self, category) - предикат «экземпляр продукта относится к категории категорий»

o get_total_for_day (self, dt) - вернуть общий доход от продаж продукта за день dt.

· Order

o recalculate_total (self) - пересчитать стоимость покупки;

o get_orders(dateframe) –вернуть записи Order за указанный dateframe (‘day’, ‘month’, ‘year’)

o

· Products Orders

o recalculate_total (self) –пересчитать значение total (доход от покупки товарной позиции в чеке)

o get_category_total (category) –возвращает доход категории category заказанные временные рамки.

o get_time_series (product, full = False) –возвращает временной ряд продажа продукта указанные временные рамки dateframe. Если заполнено = Истина, то возвращается в текущее время.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: