Работа с базой данных. Оптимизация производительности Django проектов (часть 2)

Это продолжение серии статей про оптимизацию Django приложений. Первая часть доступна здесь и рассказывает о профилировании и настройках Django. В этой части мы рассмотрим оптимизацию работы с базой данных (модели Django). В этой части часто будет использоваться логирование SQL запросов и DDT, про которые написано в первом посте. Работа с базой данных во всех примерах будет использоваться PostgreSQL, но для пользователей других СУБД большая часть статьи также будет актуальна. Примеры в этой части будут основаны на простом приложении блога, которое мы будем разрабатывать и оптимизировать по ходу статьи. Начнем с следующих моделей: from django.db import models class Tag(models.Model): name = models.CharField(max_length=64) def __str__(self): return self.name class Author(models.Model): username = models.CharField(max_length=64) email = models.EmailField() bio = models.TextField() def __str__(self): return self.username class Article(models.Model): title = models.CharField(max_length=64) content = models.TextField() created_at = models.DateField() author = models.ForeignKey(Author) tags = models.ManyToManyField(Tag) def __str__(self): return self.title Весь код доступен на GitHub с разбивкой по тегам. Массовые изменения Массовая вставка Предположим,… Читать далее »

Получить все поля модели с его значениями Django

Для получения значений из модели Django и дальнейшего их использования и манипуляций с ними можно воспользоваться подобным простеньким скриптом. Я использовал его для создания формы фильтрации по всем полям и приводил типы к виду для html разметки: type_filter ={ ‘CharField’: ‘text’, ‘TextField’: ‘textarea’, ‘IntegerField’: ‘IntegerField’, ‘DateField’: ‘DateField’, ‘AutoField’: », ‘ForeignKey’: » } your_fields = Your_model._meta.local_fields filter = dict() for f in your_fields: if type_filter[f.get_internal_type()]: filter[f.name] = { ‘name’: f.verbose_name, ‘type’: type_filter[f.get_internal_type()] }

Как установить php5 и php7 на Ubuntu 18.04 LTS

PHP — рекурсивная аббревиатура для гипертекстового процессора. Это язык сценариев общего назначения с открытым исходным кодом, который широко используется в веб-разработке благодаря его способности встраиваться в HTML. Язык сценариев используется для написания заранее написанных программ, которые впоследствии используются для автоматизации задач. PHP-скрипты обычно используются в Linux, Unix, Windows, Mac OS и других операционных системах. Когда вы используете PHP в веб-разработке, вы можете выбрать свой веб-сервер и основную операционную систему. В этой статье описана пошаговая процедура установки версий PHP 5.6 и 7.2 на Ubuntu. После установки двух версий мы также объясним, как можно отключить одну версию и включить в системе другую версию как версию по умолчанию. Мы запустили команды и процедуры, упомянутые в этой статье, в системе Ubuntu 18.06 LTS. В этой статье мы используем командную строку Ubuntu, Terminal, для установки и настройки PHP. Вы можете открыть приложение «Терминал» через системную черту или сочетание клавиш Ctrl + Alt + t. Официальный… Читать далее »

Профилирование и настройки Django. Оптимизация производительности Django проектов

Это первая статья из серии, здесь будут рассмотрено профилирование и настройки Django. Django это мощный фреймворк используемый в множестве отличных проектов. Из коробки в нем включено много полезных батареек, которые значительно ускоряют разработку и соответственно уменьшают ее стоимость. Однако, когда проект растет и набирает аудиторию, вы неизбежно столкнетесь с проблемами производительности. В этом посте я попробую рассказать о том с какими проблемами вы можете столкнуться и как их решить. Профилирование Перед тем выполнять оптимизацию необходимо измерить текущую производительность, чтобы после оптимизации можно было сравнить результаты. Такие измерения нужно будет делать часто, после каждого изменения, так что процесс должен быть автоматизированным. Профилирование — это процесс измерения метрик проекта. Таких как: время ответа сервера, использование CPU, использование памяти и тд. Python предоставляет профайлер в стандартной библиотеке, который вполне удобно использовать для измерения производительности кусков кода. Но для профилирования целового проекта существуют более удобные решения. Логирование Самая частая проблема производительности это лишние и/или не эффективные… Читать далее »

Как правильно перенести сайт на WordPress на новый домен?

Нередко возникают ситуации, когда функционирующий сайт на движке WordPress крайне необходимо перенести на другое (новое) доменное имя. Т.е. фактическое наполнение ресурса остается, а меняется только его «обертка» – домен. При этом очень важно сохранить анатомию ресурса: ссылки, перелинковку, комментарии, работающие плагины и т.д. Более того, нужно сохранить еще и «пузомерки» PR и тИЦ. Решение проблемы требует профессионального подхода и опыта, иначе можно нанести колоссальный вред сайту, а исправление ситуации потом займет несколько месяцев. Можно условно выделить 2 этапа при переносе сайта: Перенос всего ресурса (движок, контент, БД и т.д.) на новое доменное имя. Правильная настройка 301 редиректа на старом домене. Переносим работающий WP-сайт на новый домен Первым делом нужно провести две простые операции: Зайти через протокол ftp и скопировать все содержимое с каталога, который имеет название вашего старого домена. Выполнить полный бекап базы данных, чтобы с его помощью можно было легко восстановить нужные данные. Дальше требуется «сказать» движку о том,… Читать далее »

Управление категориями товаров, тегами и атрибутами

Категории товаров Категории продуктов являются основным способом группировки продуктов со схожими функциями. Вы также можете добавить подкатегории, если хотите. Например, согласен если вы продаете одежду, у вас могут быть «футболки», «толстовки» и «брюки» в качестве категорий. Как добавлять / редактировать категории товаров Управление категориями осуществляется с экрана « Продукты»> «Категории» . Подобно категориям в ваших сообщениях в WordPress, вы можете добавлять, удалять и редактировать  категории товаров. Добавить имя . Добавить слизень  (необязательно); это URL-версия имени. Выберите Родителя, если это подкатегория. Введите описание  (необязательно); некоторые темы отображают это. Выберите тип отображения . Решите, что будет показано на целевой странице категории. «Стандарт» использует вашу тему по умолчанию. «Подкатегории» будут отображать только подкатегории. «Продукты» отображает только продукты. «Оба» будут отображать подкатегории и продукты ниже этого. Загрузить / добавить изображение  (необязательно); В некоторых темах есть страницы, на которых отображаются изображения категорий товаров, так что это хорошая идея. Витрина магазина по умолчанию отображает изображения категорий товаров в шаблоне домашней страницы. Категории также могут быть переупорядочены путем перетаскивания — этот порядок используется по умолчанию в интерфейсе всякий раз, когда категории перечислены. Это включает как виджеты, так… Читать далее »

Добавление и управление продуктами

Добавление товара Прежде чем добавить свой первый продукт, давайте познакомимся с тем, как работают категории, теги и атрибуты продукта. Категории товаров Категории товаров и теги работают так же, как обычные категории и теги, которые вы используете при написании сообщений в WordPress. Их можно создавать, редактировать и выбирать в любое время. Это можно сделать, когда вы впервые создаете продукт или возвращаетесь и редактируете его или конкретно категорию / тег. Атрибуты Они могут быть добавлены для каждого продукта, или вы можете настроить глобальные атрибуты для всего магазина (например, в многоуровневой навигации). Чтобы узнать больше, см.  Управление категориями продуктов, тегами и атрибутами. Типы продуктов После настройки атрибутов и категорий и настройки управления запасами мы можем начать добавлять продукты. При добавлении продукта, первое, что нужно решить, это тип продукта. Простой  — охватывает подавляющее большинство любых продуктов, которые вы можете продать. Простые продукты поставляются и не имеют вариантов. Например, книга. Сгруппированный  — это набор связанных продуктов, которые можно приобрести по отдельности и… Читать далее »

Фильтр товаров по атрибутам

Виджет Фильтр товаров по атрибутам, являющийся частью расширения поиска товаров WooCommerce, предоставляет фильтр атрибутов товаров для вашего магазина. Пока ваши клиенты выбирают желаемые условия, он находит подходящие товары и показывает их на странице магазина. Этот фильтр отображает условия атрибута продукта. Клиент может щелкнуть по нужному атрибуту, и на странице магазина отобразятся продукты, связанные с ним. Атрибуты продукта используются для определения конкретных характеристик самого продукта. Они могут связывать общие или индивидуальные характеристики и характеристики с одним или несколькими продуктами. Никогда не используйте категории продуктов или теги для таких вещей, как размер, цвет,  марка, форма, характеристики и т. Д. Узнайте, как использовать вместо них атрибуты продуктов и сделайте управление своими продуктами легкой задачей. Типичным примером этого может служить атрибут Color —  фильтр будет отображать различные варианты выбора цвета. В следующих примерах два виджета позволяют уточнить результаты, выбрав цвет и размер. В этом примере два виджета с фильтром предлагают выбор цвета и размера. Клиент делает первый шаг в уточнении результатов,… Читать далее »

Команды для работы с PostgreSQL

Эта статья «Команды для работы с PostgreSQL» поможет показать вам список всех баз данных и таблиц в PostgreSQL и команды для работы с ними. Для начала, войти в PostgreSQL с помощью команды PSQL sudo -u postgres psql и выполнить следующую команду из командной строки PostgreSQL. Вывести все базы в PostgreSQL Вы можете использовать любую из перечисленных команд что ниже, чтобы вывести список всех баз данных в PostgreSQL: \list или \l Вывести все таблицы в PostgreSQL Чтобы просмотреть список таблиц в любой базе данных, сначала необходимо подключиться к этой БД, а затем выполнить команду для просмотра таблиц. Первая команда подключит вас к БД (например: your_DB) в которой вы хотите увидеть таблицы и вторая команда покажет их: \connect your_DB \dt При работе с таблицами испоьзуем обычный SQL синтаксис, например: select * from django_migrations limit 1;

Как удалить «rel=”canonical”» в WordPress для плагина «SEO by Yoast»

Всем привет! У меня был маленький заказ, где СЕОшники заказали убрать мета-тег  «rel=»canonical»» в WordPress.  Зачем на сайте удалять  «rel=»canonical»» я не знаю, может, для уничтожения дублей страниц?! Как удалить «rel=»canonical»» я разобрался, но так и не понял, для чего это все надо. Если кто-то зашел на мою страницу под запросом «Как убрать rel canonical», в комментах напишите, пожалуйста, для чего и для каких целей вы решили это убрать. Спасибо! Хочу сказать, что данный хук подойдет только для плагина «SEO by Yoast». Чтобы убрать в head мета-тег  <link rel=»canonical» href=»» /> , откройте файл «functions.php» вашей темы и перед закрывающим тегом «?>» или после открывающим «<?» (может быть и так «<?php») вставьте вот такой код: 1 2 3 4 5 // Удалить каноническую ссылку — SEO by Yoast function at_remove_dup_canonical_link() { return false; } add_filter( ‘wpseo_canonical’, ‘at_remove_dup_canonical_link’ ); Все, проверяйте! После проделанной процедуры «rel canonical» исчезнет. Жду с нетерпением от вас комментариев, в которых вы мне… Читать далее »