Ошибка: Элемент управления недопустимой формы не фокусируется
У меня возникла проблема с формой 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)
Спасибо всем, кто пытался помочь.