TinyMCE локальная обработка загрузки файлов с Python - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в использовании Django.И я хотел бы настроить редактор TinyMCE для себя.Я скачал его и добавил в проект как библиотеку третьей части, не устанавливая его через pip.Как вы знаете, в TinyMCE нет бесплатного локального загрузчика файлов.И я хотел бы сделать 3 вещи: локальный загрузчик изображений, локальный загрузчик аудио / видео и локальный загрузчик файлов (с любым расширением (.pdf, .c, .cpp), это похоже на то, как выдобавить файл в конце поста, чтобы пользователи могли его скачать).И во время реализации у меня возникли следующие проблемы.

  1. Я реализовал локальный загрузчик изображений с помощью TinyMCE file_picker_callback (), и все работает отлично.Я могу загружать и редактировать фотографии локально, и все это отображается в шаблоне просмотра страницы.Путь каждого изображения записывается в поле textarea в MySQL DB как атрибут src.Должно ли каждое изображение загружаться (копироваться) в папку MEDIA сайта или в отдельное поле в БД MySQL.И как это можно реализовать, как написать и вызвать обработчик python в js-файле?

  2. И я до сих пор не скачиваю аудио / видео файлы.Кажется для этого в js-файле, после нажатия кнопки необходимо обернуть их в соответствующие теги аудио / видео HTML5.Затем, как и изображения, скопируйте в базу данных или папку «Медиа».Я также не знаю, как написать обработчик Python и вызвать его в js.

  3. Для загрузки файлов я сделал свой собственный плагин и добавил его в TinyMCE.В плагине я создал элемент ввода и остановился на этом.

Теперь я страдаю от этого в течение месяца, но я действительно хочу это сделать.Поскольку, сделав один полнофункциональный текстовый редактор, вы можете использовать его много раз в других проектах.И я думаю, что это нужно многим людям.Если есть заинтересованность, то мы могли бы реализовать это вместе.В интернете есть php-обработчики.Но обработчиков Python для этой цели я не нашел.Любая помощь и советы приветствуются.Я использую Django 2.0.8 и python 3.6.Редактор находится в административной панели.

Мои модели.py:

class Post(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField(unique=True)
    description = models.TextField()
    content = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    tags = TaggableManager(blank=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE, related_name="post_author")

    class Meta:
        ordering = ["-created", "-updated"]

admin.py:

class PostModelAdmin(admin.ModelAdmin):
    list_display = ["title", "updated", "created"]
    list_display_links = ["title"]
    list_filter = ["created", "tags"]
    search_fields = ["title", "content",]
    form = MyTextForm
    class Meta:
        model = Post

    class Media:
        js = ('js/tinymce/tinymce.js', 'js/init-tinymce.js',
              '//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js',)

admin.site.register(Post, PostModelAdmin)

forms.py

class MyTextForm(forms.ModelForm):
    class Meta:
        fields = '__all__'
        model = Post
        widgets = {
            'content': forms.Textarea(attrs={'class': 'tinymce', 'label' : 'Content'}),
        }

И в изображениях БД, хранящихся как (в поле содержимого):

<p><img src="data:image/jpeg;base64,/9j/4AAQSkZJRgH/2Q==" alt="" width="439" height="604"/></p>
...