<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>
Блог
Johnny Neon ‘Hearts’
Подключение TinyMCE в админку django
Для того, чтобы в админке подключить WYSIWYG-редактор TinyMCE необходимо проделать следующие операции.
-
Скачиваем сам редактор TinyMCE: http://www.tinymce.com/download/download.php и заливаем на сервер (со стороннего url работать не будет).
-
Устанавливаем django-tinymce (обязательно должен быть версии 1.5.1a2 или выше, в стабильной на момент написания статьи версии 1.5 он имеет баг, из-за которого не хочет работать без напильника):
pip install django-tinymce
- В 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',
...
)
- В модель, в которой хотим включить редактор TinyMCE импортируем tinymce:
from tinymce import models as tinymce_models
Для самого класса модели пишем следующее
class MyModel(models.Model):
myField = tinymce_model.HTMLField()
Т.е. мы заменяем models.TextField() на tinymce_model.HTMLField() в необходимых местах.
- В 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
Часто бывает нужно организовать новости, блог, какие-то статьи. Для этого обычно используют небольшой вступительный текст и ссылку “Читать далее”.
Если вы используете HTML-тэги в своих статьях, то заметите, что Django не закрывает их при использовании фильтра truncatewords.
Пример реализации
Если вы хотите запретить HTML-тэги только в этом вступительном тексте, а также картинки, видео и прочее, то можно пойти следующим путем. В необходимом файле шаблона, в требуемой переменной примените фильтр striptags, затем truncatewords, затем safe (для правильной обработки HTML-символов):
{{ news.description|striptags|truncatewords:"30"|safe }}
Получится, например, такой текст - “Как все мы помним, после The International все датские игроки из MYM покинули эту организацию и им на замену была взята команда Scythe.SG. Вчера стало известно, что состав снова претерпел серьезные …”. Протестировано на Django 1.3.
Также, если у вас пробелы представлены в виде , то приведенный выше метод может не работать. Для решения проблемы используйте фильтр truncatewords_html. Таким образом, код будет вида:
{{ news.description|truncatewords_html:"30"|safe }}
Как видите, мы еще убрали фильтр striptags.
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.
Table X is marked as crashed and should be repaired
Это ошибка обычно возникает из-за неожиданной перезагрузки СУБД.
В PhpMyAdmin или MySQL-консоли выполните следующий запрос:
REPAIR TABLE `mytable`
где mytable - таблица, указанная в ошибке.
Как получить список заголовков столбцов в модели django
Получаем список всех имен столбцов модели
model_field_names = model._meta.get_all_field_names()
Получаем название модели
model_name = model._meta.getattr()
Парсер веб-страниц на 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.
Создание кнопок онлайн
При создании элементов на сайте или в оффлайн-приложениях часто требуется создать красивые кнопки. Для этого существует множество приложений, но нас интересуют сервисы с аналогичным функционалом в интернете. Смотрим и выбираем, кому что нравится.
Da Button Factory
У этого сайта одна функция - создание кнопок. Настроек не слишком много, но можно просто и быстро создать неплохие кнопочки.
Аналоги
http://css-tricks.com/examples/ButtonMaker - кнопки без изображения (на css3).
http://jirox.net/AsButtonGen - китайский сервис, настроек больше, чем в Da Button Factory, но менее удобен.
Если вы знаете еще какие-либо онлайн-сервисы для создания кнопок, пожалуйста, оставьте их адреса в комментариях.
Редактирование изображений онлайн
На сегодняшний день существует множество онлайн-сервисов, которые в окне браузера позволяют делать то, что раньше могли только установленные на компьютере программы. Я не хочу перегружать вас информацией, поэтому буду рассмотривать по одному представителю из каждого направления.
Приступим!
pixlr
Просто нереально мощный и бесплатный сервис для работы с фотографиями. Имеет русскоязычный интерфейс. Его вполне можно позиционировать с онлайн-аналогом фотошопа. На этом сайте доступно несколько сервисов для работы с изображениями. Начнем по порядку.
Editor
Интерфейс Editor’а очень сильно похож на интерфейс программы Paint.Net, т.е. является простым и удобным, но в то же время очень функциональным. Попробуйте, и сами все увидите.
Express
Сервис Express требуется для наложения каких-либо эффектов на фотографию, быстрой обрезки или изменения размеров изображения.
O-matic
Этот сервис также позволяет накладывать кучу спецэффектов на изображение. С помощью него можно сделать, например, следующее.
Также, на pixlr.com есть плагины-грабберы для файрфокса и хрома. С помощью них можно через контекстное меню в браузере открыть интернет-картинку сразу для редактирования в pixlr.com. Также есть бесплатный хостинг для изображений. Это не столь интересно, поэтому подробно не рассматриваю.
Аналоги
https://www.thecanvasprints.co.uk/photoeditor
Если вы знаете еще какие-либо онлайн-сервисы для работы с изображениями, пожалуйста, оставьте их адреса в комментариях.