Создание форм с несколькими типами ввода - PullRequest
3 голосов
/ 02 апреля 2019

Я пытаюсь создать поле формы ввода, которое может принимать текст, изображения или видео, как мы видим в Twitter.

Я пытаюсь сделать следующее:

from django import forms
from .models import Tweet

class TweetModelForm(forms.ModelForm):
    content = forms.CharField(label='',
                widget=forms.Textarea(
                        attrs={'placeholder': "Your message",
                            "class": "form-control"}
                    ))

Который производит enter image description here

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

Редактировать: Если это невозможно с помощью Django, это можно сделать с помощью HTML5?

Ответы [ 3 ]

4 голосов
/ 08 апреля 2019

enter image description here

Вы должны использовать WYSIWYG Editor для этого, как Froala Editor

Использование

from django import forms
from froala_editor.widgets import FroalaEditor

 class PageForm(forms.ModelForm):
     content = forms.CharField(widget=FroalaEditor)
0 голосов
/ 05 апреля 2019

Для добавления загрузки файла в Django форму необходимо добавить FileField в класс формы.

Обновите forms.py , как показано ниже.

from django import forms
from .models import Tweet

class TweetModelForm(forms.ModelForm):
    content = forms.CharField(label='',
                widget=forms.Textarea(
                        attrs={'placeholder': "Your message",
                            "class": "form-control"}
                    ))
    file = forms.FileField(label="Upload file", blank=True)

Это отобразит отдельное поле файла, чтобы пользователь мог загружать изображения и другие файлы.

0 голосов
/ 04 апреля 2019

Вы пытались использовать плагин WYSIWYG? Джанго Summernote может работать https://github.com/summernote/django-summernote

Затем вы можете установить виджет на SummernoteWidget в форме

...