Ошибка: Элемент управления недопустимой формы не фокусируется

У меня возникла проблема с формой Django, когда я получаю следующие сообщения об ошибках в консоли браузера:

  • Недопустимый элемент управления формы с name='content' не фокусируется.
  • Недействительный элемент управления формы не фокусируется.

Я не уверен, что вызывает эту ошибку или как ее решить. Я проверил свою HTML-форму и представление Django, но не могу найти никаких очевидных проблем.

Btw, я новичок в CKEditor и Django, извините меня за любые "глупые" просьбы - я просто не смог найти исправление этого.

Вот фрагмент моей HTML-формы:

create.html:

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Create Post</title>
    <link rel="stylesheet" href="{% static 'django_ckeditor_5/dist/styles.css' %}">
</head>
<body>
<div class="container">
    <div class="card">
        <h1>Create Post</h1>
        <form action="" method="POST" enctype="multipart/form-data">
            <!-- Other fields, removed for simplicity reasons. -->
            <div class="input">
                {{ form.content }}
            </div>
            <button type="submit">Create Post</button>
        </form>
    </div>
</div>
<script src="{% static 'django_ckeditor_5/dist/bundle.js' %}"></script>
</body>
</html>

views.py (только функция, необходимая для create.html:

)
def createPost(request):
    if request.user.is_authenticated:
        if request.method == "POST":
            form = forms.CreatePostForm(request.POST, request.FILES)
            if form.is_valid():
                post = form.save(commit=False)
                post.author = request.user
                post.slug = slugify(post.title)
                post.save()
                messages.success(request, 'Post created successfully.')
                return redirect('home')
            else:
                messages.error(request, 'Error creating post. Please check the form.')
        else:
            form = forms.CreatePostForm()
        context = {'form': form}
        return render(request, 'create.html', context)
    else:
        raise PermissionDenied()

models.py:

import os
import uuid

from django.db import models
from django.utils.text import slugify
from django_ckeditor_5.fields import CKEditor5Field
from django.contrib.auth.models import User

def thumbnail_upload_path(instance, filename):
    _,ext = os.path.splitext(filename)
    new_filename = f"{uuid.uuid4()}{ext}"
    return os.path.join("uploads/thumbnails/", new_filename)

class Post(models.Model):
    title = models.CharField(max_length=50, null=False, blank=False)
    desc = models.TextField(max_length=255, null=False, blank=False)
    slug = models.SlugField(unique=True, blank=True)
    thumbnail = models.ImageField(upload_to=thumbnail_upload_path, null=False, blank=False)
    category = models.CharField(max_length=20, null=False, blank=False, default="Technology")
    keywords = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = CKEditor5Field('Text', config_name='extends')

    def save(self, *args, **kwargs):
        if not self.slug or self.title != self.slug:
            self.slug = slugify(self.title)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title

forms.py:

from django import forms
from django_ckeditor_5.widgets import CKEditor5Widget
from . import models

class CreatePostForm(forms.ModelForm):
    class Meta:
        model = models.Post
        fields = '__all__'
        widgets = {
            'content': CKEditor5Widget(config_name='extends'),
        }

Я проверил HTML-форму и представление Django, чтобы убедиться, что виджет CKEditor5 включен правильно и данные формы обрабатываются корректно. Несмотря на мои усилия, в браузере продолжают появляться сообщения об ошибках.

Исправлено:

Проблема заключалась в поле содержимого в Model

Вместо:

content = CKEditor5Field('Text', config_name='extends')

это должно было быть:

content = CKEditor5Field('Text', config_name='extends', null=True, blank=True)

Спасибо всем, кто пытался помочь.

Вернуться на верх