Как в Django добавить CKEditor в форму на странице?
Всем привет.
В админке CKEditor работает:
Но в форме его нет:
models.py
class Post(models.Model):
post_title = models.CharField(max_length=250, verbose_name='Заголовок')
post_content = RichTextField(max_length=450000, verbose_name='Содержание', default='test')
forms.py
class PostForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['cat'].empty_label = 'категория не выбрана'
captcha = CaptchaField()
class Meta:
model = Post
fields = ['post_title', 'post_content']
def clean_post_title(self):
post_title = self.cleaned_data['post_title']
if len(post_title) >= 250:
raise ValidationError('Длина превышает 250 символов')
return post_title
views.py
class FormAdd(View):
def get(self, request):
form = PostForm
return render(request, 'sitelogic/addpost.html', context={'form': form})
def post(self, request):
request_keep = PostForm(request.POST, request.FILES)
if request_keep.is_valid():
request_keep.save()
return redirect('home_page')
return render(request, 'sitelogic/addpost.html', context={'form': request_keep})
addpost.html
<form action="{% url 'add_post' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">добавить</button>
</form>
P.S: Ссылка на CKEditor https://django-ckeditor.readthedocs.io/en/latest/
В ModelForm
:
post_content = forms.CharField(widget=CKEditorWidget())
В templates
:
<form>
{{ myform.media }}
{{ myform.as_p }}
<input type="submit"/>
</form>