Django中如何将数据库数据传入Froala Editor表单?求推荐编辑器
问题解答
一、如何将数据库中的文章数据传入Froala Editor表单
你需要新增一个编辑视图,从数据库取出目标文章实例并传入ModelForm,表单会自动将数据填充到编辑器中。
1. 修改视图函数(views.py)
优化现有创建视图的冗余代码,并新增编辑视图:
from django.shortcuts import get_object_or_404, render, redirect from .forms import FroalaModelForm from .models import FroalaModel # 创建文章视图 def post_froala_form(request): if request.method == 'POST': form = FroalaModelForm(request.POST) if form.is_valid(): # form.is_valid()后已自动处理字段赋值,无需手动操作 form.save() return redirect('polls:froala_index') else: # GET请求返回空表单 form = FroalaModelForm() return render(request, 'polls/froala_template.html', {'form': form}) # 编辑文章视图 def edit_froala_form(request, pk): # 根据主键获取要编辑的文章实例 article = get_object_or_404(FroalaModel, pk=pk) if request.method == 'POST': # 传入instance参数,将文章数据填充到表单 form = FroalaModelForm(request.POST, instance=article) if form.is_valid(): form.save() return redirect('polls:froala_index') else: # GET请求用instance初始化表单,自动填充已有数据 form = FroalaModelForm(instance=article) return render(request, 'polls/froala_template.html', {'form': form})
2. 配置路由(urls.py)
添加编辑视图的URL规则:
path('froala/edit/<int:pk>/', views.edit_froala_form, name='edit_froala_form'),
3. 模板无需额外修改
现有froala_template.html已适配创建和编辑场景,表单会根据是否传入instance自动填充数据,Froala Editor会加载content字段的已有内容。
二、适合的表单与编辑器推荐
表单类
- ModelForm:你当前使用的ModelForm完全适配场景,它直接与数据库模型绑定,自动处理数据的创建、更新逻辑,无需手动赋值字段,是Django处理模型数据表单的最优选择。
- Crispy Forms:你已在使用的工具,能快速美化表单布局,减少模板代码,非常适合搭配ModelForm使用。
富文本编辑器
- Froala Editor:功能全面,支持多格式编辑、图片上传、插件扩展,文档完善,适合复杂编辑需求场景。
- CKEditor:开源免费,社区活跃,功能覆盖大部分文章编辑需求,Django有成熟的
django-ckeditor集成包,配置简单。 - TinyMCE:轻量易用,加载速度快,适合对性能要求较高的场景,有官方Django集成方案。
内容的提问来源于stack exchange,提问作者shotgun500
相关产品推荐
相关产品推荐

