IT Блог

Документации и переводы

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

Google блокирует попытку авторизации с моего сайта или как разрешить доступ Google авторизации из другого места удаленно?

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

  • Во вкладке "Безопасность" (в настройках аккаунта гугл) выводит: "Попытка входа из приложения или с устройства заблокирована".
  • Присылает письмо "Предотвращена попытка входа в аккаунт":

Нужно нажать "Посмотреть действия" и в следующем окне нажать "Да" ("Да это был я!"):

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

Если...


Невозможно исправить ошибки, у вас отложены (held) битые пакеты

Когда терминал выдаёт что-то подобное: Невозможно исправить ошибки, у вас отложены (held) битые пакеты, или когда система linux не может найти какие-либо библиотеки, то нужно посмотреть в каком репозитории они лежат и добавить в /etc/apt/sources.list необходимые репозитории.

Например, когда я пытался запустить nodejs, терминал выдал следующее:

$ sudo apt-get install nodejs curl https://www.npmjs.org/install.sh | sudo sh
Пакеты, имеющие неудовлетворённые зависимости:
 nodejs : Зависит: rlwrap но он не может быть установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

После добавления в /etc/apt/sources.list ссылки на репозиторий http://ftp.de.debian.org...


Адаптация картинок под разрешения с высокой плотностью пикселей

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

.selector {background: url(../path_to_image/image.png) no-repeat; width: 10px; height: 10px;}

@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
 .selector {background-image: url(../path_to_image/image_2x.png); background-size: 100%;}
}

Если требуется использовать фоновый паттерн (повторяющийся узор), то код перепишется следующим образом:

.selector {background: url(../path_to_image/image.png) repeat;}

@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
 .selector {background-image: url(../path_to_image/image_2x.png); background-size: 10px 10px;}
}

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


linebreak in admin django. Разделить на строчки поле TextField в админке или вывести html в ячейке таблицы при редактировании списка объектов

Рассмотрим ситуацию, когда нужно вывести список доменных имён в списке объектов.

Допустим, мы хотим вести учёт пользователей, которые имеют свои доменные имена.

class Person(models.Model):
    name = models.CharField('Имя', max_length=255)
    domains = models.TextField('Доменные имена')

Теперь, если мы хотим видеть эту информацию в списке просмотра объектов Person, то у нас будет следующее:

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    list_display = ('name ', 'domains')

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

1-ый способ...


Подборка полезных библиотек, плагинов, скриптов

Список содержит применяемые мною библиотеки, плагины, скрипты и т. д. Это не весь список, но может кто-то найдёт что-то для себя полезное:

jquery-autotab-master - настройка перехода фокуса на следующее поле по нажатию клавиши tab

jquery.scrollTo - плавная перемотка страницы до указанного элемента.

Селекты с автокомплитом

chosen - http://harvesthq.github.io/chosen/

typeahead - https://github.com/twitter/typeahead.js

jquery ui - https://jqueryui.com/autocomplete/

Ну и любимая блоггерами строчка подобных постов: список будет пополняться :)


javascript как узнать время в определённом городе

Есть сервис, позволяющий узнать время в городе http://time.is/ru/widgets

Например, для Иркутска будет вставка такого скрипта:

<a href="http://time.is/Shelekhov" id="time_is_link" rel="nofollow">Шелехов:</a>
<span id="Shelekhov_z41b"></span>
<script src="http://widget.time.is/t.js"></script>
<script>time_is_widget.init({Shelekhov_z41b:{time_format:"hours:minutes"}});</script>

Ниже показан рабочий пример скрипта:


ChoiceField with empty value, select default value django. Вставить пустое значение в тег селект

Если мы имеем дело с обычно формой ​forms.Form (и в особом случае при использовании forms.ModelForm, см. ниже) и хотим иметь пустое значение при выборе в селекте, то нам нужно позаботиться о создании пустого значения вручную.

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

На уровне Django

1-ый способ - с использованием ChoiceField

class MyForm(forms.Form):
SERVICES = ((REG_IP, u'Регистрация ИП'),
            (REG_OOO, u'Регистрация ООО'))
SUBJECTS = ((SERVICE, u'Услуга'),
            (PARTNERSHIP, u'Сотрудничество'),

blank_choice = (('', '--- Выберите значение ---'),) 
service = forms.ChoiceField(choices=blank_choice + SERVICES)
subject = forms.ChoiceField(choices=blank_choice...

reverse url admin django. Получить путь объекта в представлениях и шаблонах для изменения в админке

Получить путь (url) объекта в представлениях и шаблонах для изменения в админке не сложно. Достаточно знать синтаксис первого аргумента метода reverse. Для того, чтобы что-то сделать с объектом из админки нужно сначала написать "admin:app_model_", где app - приложение, где находится необходимая модель, model - сама модель. И выбрать необходимое действие:

  • add - добавить новый объект.
  • change - изменить объект.
  • changelist - открыть список объектов.
  • history - открыть историю изменения объекта.
  • delete - удалить объект.

Ниже я привёл примеры, которые наглядно это дело отображают (обратите внимание, что некоторые урлы требуют id объекта).

В представлениях (во вьюхах)

instance = Model.objects.get(id=1)  # Найдём объект по id=1...

Проверка на наличие внешнего ключа foreign key. Ошибка DoesNotExist

Если проверить наличие внешнего ключа поля ForeignKey у экземпляра модели, которая не имеет этот внешний ключ, то выйдет ошибка: DoesNotExist, так как у модели нет этого атрибута. Это не тот случай, когда модель имеет атрибут, но его значение None, поэтому нам выводится ошибка, что атрибут не найден.

Допустим имеется класс Person, содержащий поле school, которое является внешним ключом класса School.

Пусть в базе данных существует person с id=1 без school:

person = Person.objects.get(id=1)
if person.school:
   # to do something

Получим DoesNotExist.

Используя встроенную функцию hasattr(obj, 'field'), получим False, если в БД отсутствует связь с другой...

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

Попробуйте

Выберите валюту для отображения денежных единиц