Блог

Johnny Neon ‘Hearts’

<p><iframe src="http://player.vimeo.com/video/37123607?title=0&byline=0&portrait=0” width=”400” height=”225” frameborder=”0” allowfullscreen=”allowfullscreen”></iframe></p>
<p><a href= Neon ‘Hearts’</a> from <a href="http://vimeo.com/davemeinert”>Dave Meinert</a> on <a href="http://vimeo.com“>Vimeo</a>.</p>

like it

Подключение TinyMCE в админку django

Для того, чтобы в админке подключить WYSIWYG-редактор TinyMCE необходимо проделать следующие операции.

  1. Скачиваем сам редактор TinyMCE: http://www.tinymce.com/download/download.php и заливаем на сервер (со стороннего url работать не будет).

  2. Устанавливаем django-tinymce (обязательно должен быть версии 1.5.1a2 или выше, в стабильной на момент написания статьи версии 1.5 он имеет баг, из-за которого не хочет работать без напильника):

pip install django-tinymce
  1. В settings.py вашего проекта записываем записываем следующие переменные:
TINYMCE_JS_URL = 'tiny_mce/tiny_mce.js'
TINYMCE_JS_ROOT = 'tiny_mce'
TINYMCE_DEFAULT_CONFIG = {'theme': "advanced", 'theme_advanced_toolbar_location' : "top", 'height': '400'}

TINYMCE_JS_URL - путь к tiny_mce.js - например, http://mysite.com/tinymce/tiny_mce.js (крайне желательно писать без домена, он здесь дан только для того, чтобы было понятно, относительно чего происходит запрос)

TINYMCE_JS_ROOT - путь к корневой папке, где лежит tiny_mce.js - например, http://mysite.com/tinymce/ (крайне желательно писать без домена)

TINYMCE_DEFAULT_CONFIG - конфигурация по умолчанию, подробности см. в официальной документации TinyMCE.

Также, в INSTALLED_APPS надо дописать 'tinymce':

INSTALLED_APPS = (
    ...
    'tinymce',
    ...
)
  1. В модель, в которой хотим включить редактор TinyMCE импортируем tinymce:
from tinymce import models as tinymce_models

Для самого класса модели пишем следующее

class MyModel(models.Model):
    myField = tinymce_model.HTMLField()

Т.е. мы заменяем models.TextField() на tinymce_model.HTMLField() в необходимых местах.

  1. В urls.py проекта добавляем (r'^tinymce/',include('tinymce.urls')):
urlpatterns = patterns('myproject.views',
    ...
    (r'^tinymce/', include('tinymce.urls')),
    (r'^admin/', include(admin.site.urls)),
)

Источники:
1. http://seobacks.ru/tinymce-django.html
2. http://django-tinymce.googlecode.com/svn/tags/release-1.5/docs/.build/html/index.html

django

"Читать далее" в django

Часто бывает нужно организовать новости, блог, какие-то статьи. Для этого обычно используют небольшой вступительный текст и ссылку “Читать далее”.

Если вы используете HTML-тэги в своих статьях, то заметите, что Django не закрывает их при использовании фильтра truncatewords.

Пример реализации
Если вы хотите запретить HTML-тэги только в этом вступительном тексте, а также картинки, видео и прочее, то можно пойти следующим путем. В необходимом файле шаблона, в требуемой переменной примените фильтр striptags, затем truncatewords, затем safe (для правильной обработки HTML-символов):

{{ news.description|striptags|truncatewords:"30"|safe }}

Получится, например, такой текст - “Как все мы помним, после The International все датские игроки из MYM покинули эту организацию и им на замену была взята команда Scythe.SG. Вчера стало известно, что состав снова претерпел серьезные …”. Протестировано на Django 1.3.

Также, если у вас пробелы представлены в виде &nbsp;, то приведенный выше метод может не работать. Для решения проблемы используйте фильтр truncatewords_html. Таким образом, код будет вида:

{{ news.description|truncatewords_html:"30"|safe }}

Как видите, мы еще убрали фильтр striptags.

django

Veno ^^

<p>Хехе. Поиграл адекватно веником на доталишесе - заслужил признание в любви, блин))</p>
<p><a href=”/media/uploads/2018/11/09/WC3ScrnShot_030312_020158_01.jpg”><img class=”alignnone size-medium wp-image-149” title=”WC3ScrnShot_030312_020158_01” src=”/media/uploads/2018/11/09/WC3ScrnShot_030312_020158_01.jpg” alt=”” /></a></p>
<p>И результаты игры:</p>
<p><a href=”/media/uploads/2018/11/09/veno_cru_dotalicious.png”><img class=”alignnone size-medium wp-image-150” title=”veno_cru_dotalicious” src=”/media/uploads/2018/11/09/veno_cru_dotalicious.png” alt=”” /></a></p>

игры

Уникальные названия файлов при загрузке в Django

Django при сохранении файла через админку или форму сохраняет название файла. Например, при загрузке картинки "mypic.jpg" она сохранится с этим названием.
Также, если загружаемый файл на русском языке, то его имя будет сохранено - “моя_картинка.jpg”. Вы можете изменить этот механизм.

ПРИМЕЧАНИЕ. Последующие загружаемые файлы с таким названием будут иметь префикс "_", т.е. "_mypic.jpg", "__mypic.jpg" и т.п.

Пример реализации
Этот код должен быть помещен в файл models.py нужного вам приложения.

import os, uuid

def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (uuid.uuid4(), ext)
    return os.path.join(instance.directory_string_var, filename)

class MyModelFiles(models.Model):
    myimage = models.FileField(upload_to = get_file_path)
    directory_string_var = 'my-path-to-files-for-this-model'

class MyModelImages(models.Model):
    myimage = models.ImageField(upload_to = get_file_path)
    directory_string_var = 'my-path-to-images-for-this-model'

Таким образом, при следующей загрузке файла его имя будет выглядеть, например, так «384408e1-5465-46fd-bf47-61f913fa78e5.jpg».
Протестировано на версии Django 1.3.

django

Table X is marked as crashed and should be repaired

Это ошибка обычно возникает из-за неожиданной перезагрузки СУБД.

В PhpMyAdmin или MySQL-консоли выполните следующий запрос:

REPAIR TABLE `mytable`

где mytable - таблица, указанная в ошибке.

sql

Как получить список заголовков столбцов в модели django

Получаем список всех имен столбцов модели

model_field_names = model._meta.get_all_field_names()

Получаем название модели

model_name = model._meta.getattr()
django

Парсер веб-страниц на Python

Для успешного парсинга страниц достаточно двух инструментов - urllib и BeautifulSoup. Первый обычно доступен сразу после установки python, второй легко можно найти в интернете - http://www.crummy.com/software/BeautifulSoup/bs3/download/

Пример

>>> from BeautifulSoup import BeautifulSoup
>>> import urllib
>>> f = urllib.urlopen('http://my.site') # Открываем сайт, который будем парсить
>>> soup = BeautifulSoup(f.read()) # Считываем его и одновременно закидываем в BeautifulSoup
>>> my = soup.findAll(name='div', attrs={'class': 'news'}) # Ищем все div`ы с классом 'news'
>>> for m in my:
... print m # Выводим их

Результат, например, может быть следующий (если найден только один div):

[u'Содержание статьи 1.']

По шагам

<span>1</span>. Качаем BeautifulSoup.tar.gz, который лежит в корне.

<span>2</span>. Распаковываем gz, затем tar.

<span>3</span>. Копируем в папку (желательно без русских символов и пробелов).

<span>4</span>. Устанавливаем:

 Нажимаем Ctrl+R
 cmd
 cd C:\BeautifulSoup-3.2.1
 python setup.py install

<span>5</span>. Должно успешно установиться. Теперь можем испытать скрипт. Заходим в python:

>>> from BeautifulSoup import BeautifulSoup
>>> import urllib
>>> f = urllib.urlopen('http://my.site') # Открываем сайт, который будем парсить
>>> soup = BeautifulSoup(f.read()) # Считываем его и одновременно закидываем в BeautifulSoup
>>> my = soup.findAll(name='div', attrs={'class': 'news'}) # Ищем все div`ы с классом 'news'
>>> for m in my:
...    print m.findAll(text=True) # Выводим их

<span>6</span>. В результате должны были получить содержимое всех div c классом news.

django

Создание кнопок онлайн

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

Da Button Factory

http://dabuttonfactory.com

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

Аналоги

http://css-tricks.com/examples/ButtonMaker - кнопки без изображения (на css3).

http://jirox.net/AsButtonGen - китайский сервис, настроек больше, чем в Da Button Factory, но менее удобен.

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

дизайн

Редактирование изображений онлайн

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

Приступим!

pixlr

https://pixlr.com

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

Editor

https://pixlr.com/editor

Интерфейс Editor’а очень сильно похож на интерфейс программы Paint.Net, т.е. является простым и удобным, но в то же время очень функциональным. Попробуйте, и сами все увидите.

Express

https://pixlr.com/express

Сервис Express требуется для наложения каких-либо эффектов на фотографию, быстрой обрезки или изменения размеров изображения.

O-matic

http://pixlr.com/o-matic

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

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

Аналоги

https://www.thecanvasprints.co.uk/photoeditor

https://www.photoshop.com

http://www.sumopaint.com/app

http://www.phixr.com

http://www.picjuice.com

http://www.lunapic.com/editor

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

сервисы