无需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
相关产品推荐
相关产品推荐

