Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как можно подключить свой javascript в django админке ? [RSS Feed]

#1 Июнь 19, 2012 20:29:26

owlman
Зарегистрирован: 2012-05-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

Lexander
А в какое место результирующей страницы выводится JavaScript?
Поддерживаю вопрос с дополнением:
Код JavaScript попадает в <head></head>? или куда? (Вопрос благодаря fashust снят)
И как быть если редактор нужен только в одном поле из модели, а TextField`сов несколько?

Отредактировано owlman (Июнь 19, 2012 20:31:19)

Офлайн

#2 Июнь 19, 2012 20:34:45

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

Хреново…
Хоть код и красивый, но результат плохой.



Офлайн

#3 Июнь 19, 2012 23:19:15

fashust
От:
Зарегистрирован: 2011-07-17
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

owlman
Lexander
А в какое место результирующей страницы выводится JavaScript?
Поддерживаю вопрос с дополнением:
Код JavaScript попадает в <head></head>? или куда? (Вопрос благодаря fashust снят)
И как быть если редактор нужен только в одном поле из модели, а TextField`сов несколько?

Ну извращаться можно по разному в таком случае. С несколькими TextField-ами пока не приходилось сталкиваться, но добавлял некоторые плюшки на CharField-ы, и вроде как удобно было, django каждому input type=text присваивает id вида: id_FILED_NAME, а для Textfield обычно использую django-tinymce + filebrowser, так что там проблема с одним или несколькими решается легко.



import this

Офлайн

#4 Июнь 20, 2012 00:13:23

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

Главное что удалось подключить js файлы, а там уже просто можно дописать пару функций Jquery для нужного поля.



Офлайн

#5 Июнь 20, 2012 07:22:25

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

owlman
И как быть если редактор нужен только в одном поле из модели, а TextField`сов несколько?
Можно написать своё поле с кастомным виджетом:
class WidgetWYSIWYG(Textarea):
    def __init__(self, *args, **kwargs):
        super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor'}, *args, **kwargs)
    class Media:
        js = (
            'admin/tinymce/jscripts/tiny_mce/tiny_mce.js',
            'admin/tinymce/jscripts/textareas.js',
            )
class WYSIWYGField(Field):
    def get_internal_type(self):
        return "TextField"
    def formfield(self, **kwargs):
        defaults = {'widget': WidgetWYSIWYG}
        defaults.update(kwargs)
        return super(WYSIWYGField, self).formfield(**defaults)
На примере TinyMCE:
В скрипте инициализации указывать:

mode : "specific_textareas",
editor_selector : "wysiwygEditor",
И в моделях указывать не TextField а WYSIWYGField.



Офлайн

#6 Июнь 20, 2012 07:53:38

owlman
Зарегистрирован: 2012-05-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно подключить свой javascript в django админке ?

magnet85
owlman
И как быть если редактор нужен только в одном поле из модели, а TextField`сов несколько?
Можно написать своё поле с кастомным виджетом:
class WidgetWYSIWYG(Textarea):
    def __init__(self, *args, **kwargs):
        super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor'}, *args, **kwargs)
    class Media:
        js = (
            'admin/tinymce/jscripts/tiny_mce/tiny_mce.js',
            'admin/tinymce/jscripts/textareas.js',
            )
class WYSIWYGField(Field):
    def get_internal_type(self):
        return "TextField"
    def formfield(self, **kwargs):
        defaults = {'widget': WidgetWYSIWYG}
        defaults.update(kwargs)
        return super(WYSIWYGField, self).formfield(**defaults)
На примере TinyMCE:
В скрипте инициализации указывать:

mode : "specific_textareas",
editor_selector : "wysiwygEditor",
И в моделях указывать не TextField а WYSIWYGField.

Хороший вариант. Спасибо.
Тем более, что универсален и можно будет использовать не только в админке.

Офлайн

#7 Июнь 20, 2012 10:55:36

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Как можно подключить свой javascript в django админке ?

Для tinymce существует готовое django-приложение: django-tinymce

Офлайн

  • Начало
  • » Django
  • » Как можно подключить свой javascript в django админке ?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version