Форум сайта python.su
Делаю по инструкции http://seobacks.ru/tinymce-django.html
Все вроде сделал. Пытаюсь синхронизировать БД получаю такие ошибки
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 217, in execute
self.validate()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 245, in validate
num_errors = get_validation_errors(s, app)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/validation.py", line 28, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 146, in get_app_errors
self._populate()
File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 64, in _populate
self.load_app(app_name)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 78, in load_app
models = import_module('.models', app_name)
File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.6/dist-packages/tinymce/models.py", line 6, in <module>
from tinymce import widgets as tinymce_widgets
File "/usr/local/lib/python2.6/dist-packages/tinymce/widgets.py", line 14, in <module>
from django.forms.util import smart_unicode
ImportError: cannot import name smart_unicode
Request Method: GET
Request URL: http://www.mysite.ru/
Django Version: 1.2.1
Exception Type: ImportError
Exception Value:
cannot import name smart_unicode
Exception Location: /usr/local/lib/python2.6/dist-packages/tinymce/widgets.py in <module>, line 14
Python Executable: /usr/bin/python
Python Version: 2.6.5
Python Path: ['/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages', '/home/websrv/www/mysite/..']
Отредактировано (Июнь 22, 2010 16:28:06)
Офлайн
dissdocЕсли в сообщении об нерабочем импорте есть слово unicode это ещё не значит, что “что-то с кодировками”:-)
Что-то с кодировками…?
Офлайн
Мы мудохались с этой проблемой. Дело в том, что smart_unicode переехал в другое место.
Сначала наложили патчик, который изменял этот импорт, а сейчас уже достаточно обновить tinymce.
P.S. И всё-таки визивик это шлак. Используйте языки семантической разметки вроде markdown.
Офлайн
Вот блин )))
Markdown все давно хотел попробовать, да все времени не было. Сама судьба меня ведет к нему ))
Офлайн
Ну ёперный налево! У нас необходимость была, ибо редакторы тупые и им ворд в бравузере, блин, подавай, а то они работать не могут…
А если уж типа программер, то на кой хрен визивик? Текст должен быть размечен семантически, а не “типа красиво”.
Офлайн
Беда в том, что ЭТИМ должна будет пользоваться девочка, знающая ворд. Но компромисс нашли - мануал нуно составить ей.
Так, появилась проблема с русскими символами. :( Постараюсь максимально подробно описать. Что есть (сокращаю, чтобы не загружать вас кодом)
from django.db import models
class NewsPost(models.Model):
descr = models.TextField(editable=False)
descr_markdown = models.TextField()
def __unicode__(self):
return '%s' % self.pk
def save(self):
import markdown2
self.descr = markdown2.markdown(self.descr_markdown)
super(NewsPost, self).save()
'ascii' codec can't encode characters in position 3-6: ordinal not in range(128)
self.descr = markdown2.markdown(self.descr_markdown).encode("CP1251")
self.descr = unicode(markdown2.markdown(self.descr_markdown))
Incorrect string value: '\xD2\xE5\xF1\xF2</...' for column 'descr' at row 1
Офлайн
У меня небыло таких проблем. Я в базе держу сырой markdown, а вывожу его так:
# coding: utf-8
from django import template
from django.utils.safestring import mark_safe
import markdown
register = template.Library()
@register.filter(name='show_post')
def show_post(post):
html = markdown.markdown(post, ['codehilite'])
return mark_safe(html)
Офлайн
Не, здесь я бестолковый! Все делаю в uft-8 сам же допустил ошибку (копипастил). Вот так надо
self.descr = markdown2.markdown(self.descr_markdown).encode("utf-8")
Отредактировано (Июнь 25, 2010 09:24:35)
Офлайн
И всё-таки хранить в базе html не красиво.
Вот что ты будешь делать, если тебе захочется переделать форматирование и нужно будет изменить генерацию html?
Офлайн
Да, вы правы. Тут есть свои нюансы. Пока так оставлю, но скорее всего придется адаптировать на ошибки. Спасибо за совет.
Офлайн