Закрыть

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

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

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

Альберт Эйнштейн

IT Блог

Статьи на технические темы

Авторизация пользователей через Google

Авторизация пользователей на своём сайте через Google осуществляется так же просто, как и в или . Возьмём для примера этот сайт vivazzi.ru.

Для начала нужно перейти на страницу и создать свой проект, нажав на знак "+":

Вписываем название проекта:

Далее переходим в "Учётные данные" (вкладка находится на левой боковой панели) и щёлкаем на "Создать учётные данные".

Через кнопку "Создать учётные данные" нам нужно добавить доступ OAuth, т. е. идентификатор клиента OAuth. Щёлкаем и видим сообщение о том, что нам нужно заполнить "Окно запроса доступа Oauth". Переходим по ссылке, и можно заполнить только поле "Название продукта, который видят пользователи":

Вот теперь можем...


Авторизация через социальную сеть Facebook

Рассмотрим авторизацию пользователей на своём сайте через социальную сеть Facebook на примере сайта vivazzi.ru.

Сперва мы должны зарегистрировать своё приложение в соц. сети Facebook на странице

Щёлкните "Добавьте новое приложение" и в форме впишите название вашего проекта. В моём случае: Vivazzi.

Перед нами откроется панель приложения:

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

Теперь нужно добавить продукт "Вход через Facebook":

Выбираем платформу "Веб", если собираемся регистрировать пользователей на своём сайте. Далее...


Django allauth Авторизация через социальную сеть

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

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

На данный момент приложение поддерживает более 60 соц. сетей...


Авторизация через социальную сеть Вконтакте

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

На странице добавьте своё приложение аналогично скриншоту:

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

После подтверждения вы можете увидеть свой ID приложения, а также защищённый ключ (секретный ключ), который понадобится для авторизации:

Включённый open API позволяет производить разные действия, в том числе вход и регистрацию пользователей на своём сайте.

Для авторизации пользователей на сайте введите Адрес...


Группировка данных в зависимости от выбранного интервала времени в highstock

Как оказалась, в графиках highstock не особо гибкая настройка группировки точек в зависимости от просматриваемого интервала времени. Да, данные могут группироваться, если их очень много (более тысячи) в некотором выбранном отрезке времени. Но когда это произойдёт, точно не понятно.

Настройку группировки вы можете осуществить через параметр plotOptions.series.dataGrouping.units (), например:

Highcharts.stockChart('chart', {

    plotOptions: {
        series: {
            dataGrouping: {
                forced: true,
                units: units: [[ 'week', [1] ], ]
            },
        }
    },

    ...
});

Но здесь не указывается при каком временном определённом интервале следует выполнять соответствующую группировку (по неделям, месяцам и т. д.).

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


Создать tar

Создание архива tar

tar -cvf file.tar /path/to/file_or_folder/   # создать .tar

С форматами .tar.gz и .tar.bz2 применяется ещё и сжатие:

tar -czvf file.tar.gz /path/to/file_or_folder/   # создать .tar.gz (популярный)
tar -cjvf file.tar.bz2 /path/to/file_or_folder/   # создать .tar.bz2

Распаковка архива .tar

tar -xvf file.tar.gz

Ключи команды tar

-c - создание архива
-v - подробный список обрабатываемых файлов
-f - работа с файлом
-z - сжатие архива с помощью gzip
-j - сжатие архива с помощью bzip2
-x - извлечение файлов из архива
-C - переход в каталог (см. подробности ниже)

Тонкости архивации

Замечали, что при распаковке архива...


Разработка социальной сети Levels

Уважаемые читатели!

Рад представить свой новый проект Levels -

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

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


django-parler Check fields/fieldsets/exclude attributes of class Admin

Долго не мог понять почему Django выдаёт мне ошибку при попытке прикрутить django-parler:

Unknown field(s) (my_trans_field) specified for MyModel. Check fields/fieldsets/exclude attributes of class MyModelAdmin.

Ключевой момент в том, что в админ-классе у меня был определена переменная form:

@admin.register(MyModel)
class MyModelAdmin(TranslatableAdmin):
    form = MyModelForm

    fieldsets = (
        (None, {
            'fields': ('field_1', 'field_2'),
        }),
        (_('Translatable Fields'), {
            'fields': ('my_trans_field', )
        }),
    )

И, как оказалось, класс MyModelForm нужно тоже наследовать от специфического класса TranslatableModelForm приложения parler:

class MyModelForm(TranslatableModelForm):
    custom_field = forms.DateTimeField(label='Custom Field', required=False)

    class Media:
        css = {'all': ['spec/css/custom_styles.css', ]}

Теперь всё заработало, и я вижу поле my_trans_field...


Как добавить страницу в админку django

Добавление своей страницы в админку django мало чем отличается от добавления страницы в публичную часть сайта и осуществляется за несколько простых шагов. Но для начала создадим новое приложение spec в нашем проекте со следующей структурой:

my_project
├─ spec
│  ├─ templates
│  │  └─ admin_custom_page.html
│  ├─ __init__.py
│  ├─ urls.py
│  └─ views.py
├─ __init__.py
├─ settings.py
└─ urls.py

А затем добавим в settings.py наше приложение spec:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.sitemaps',

    'djangocms_text_ckeditor',

    'cms',
    'treebeard',
    'menus',
    'sekizai',

    'spec',
)

1. Создания представления

Пишем обычное представление в views...


Сортировка по полю в django admin

Для сортировки по полю в админке Django в списке объектов используется свойство admin_order_field.

Пример сортировки продуктов по их доступности (активности) в списке всех продуктов:

@admin.register(ProductActivate)
class ProductActivateAdmin(admin.ModelAdmin):
    list_display = ('product', 'publication_date', 'activation_applied', 'active')
    ordering = ('product__active', 'publication_date')

    def active(self, obj):
        return obj.product.active
    active.short_description = 'Активен продукт?'
    active.admin_order_field = 'product__active'
    active.boolean = True

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

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

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте