You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需form.py在Django中显示CKEditor富文本编辑器的方法

不用form.py在Django前端集成CKEditor的方案

你完全可以不用form.py,直接通过手动引入CKEditor资源并初始化的方式在前端显示富文本编辑器,同时用POST请求保存数据。以下是具体实现步骤:

1. 引入CKEditor的JavaScript资源

因为你已经在后台管理面板配置好了CKEditor,项目里已经包含了CKEditor的静态文件。直接在HTML模板的</body>前引入CKEditor的核心JS文件:

<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>

如果你的CKEditor静态文件路径不同,根据实际情况调整即可。

2. 初始化CKEditor实例

把页面里的普通textarea转换成CKEditor编辑器,通过JS代码初始化。在引入CKEditor的JS之后添加这段脚本:

<script>
    // 初始化Previous_work对应的编辑器
    CKEDITOR.replace('Previous_work');
    // 初始化skills对应的编辑器
    CKEDITOR.replace('skills');
</script>

注意这里的ID要和你textarea的id属性完全一致(你的代码里是Previous_work和skills)。

3. 修正表单配置

你的表单缺少method="POST"属性,必须加上才能发送POST请求:

<form class="container" method="POST">

4. 编写视图处理POST请求

在视图函数里直接接收POST数据,创建Profile对象保存:

from django.shortcuts import render, redirect
from .models import Profile

def create_profile(request):
    if request.method == 'POST':
        # 接收表单数据
        name = request.POST.get('name')
        email = request.POST.get('email')
        previous_work = request.POST.get('Previous_work')  # 注意和表单name属性一致
        skills = request.POST.get('skills')
        
        # 创建并保存Profile对象
        Profile.objects.create(
            name=name,
            email=email,
            previous_work=previous_work,
            skills=skills
        )
        return redirect('success_page')  # 替换成你的成功跳转页面
    return render(request, 'your_template.html')  # 替换成你的模板路径

注意:表单里的previous_work字段name是Previous_work(首字母大写),而模型里是previous_work(全小写),这里要保持对应,或者把表单里的name改成previous_work更规范。

修改后的完整HTML示例

<form class="container" method="POST">
    {% csrf_token %}
    <div class="mb-3">
        <label class="form-label">Name</label>
        <input type="text" class="form-control" name="name" id="name">
    </div>
    <div class="mb-3">
        <label class="form-label">Email</label>
        <input type="email" class="form-control" name="email" id="email">
    </div>
    <div class="mb-3">
        <label class="form-label">Previous Work</label>
        <textarea name="Previous_work" class="form-control" id="Previous_work" cols="30" rows="10"></textarea>
    </div>
    <div class="mb-3">
        <label class="form-label">Skills</label>
        <textarea name="skills" class="form-control" id="skills" cols="30" rows="10"></textarea>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
<script>
    CKEDITOR.replace('Previous_work');
    CKEDITOR.replace('skills');
</script>

这样处理后,前端的textarea就会变成CKEditor富文本编辑器,提交表单后数据会通过POST请求保存到数据库里,完全不需要用到form.py。

内容的提问来源于stack exchange,提问作者Gaurav Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:35:23