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

Django集成CKEditor 6.1出现exportpdf-no-token-url错误,请求禁用PDF导出功能的解决方案

解决Django CKEditor的exportpdf-no-token-url错误并修复表单提交问题

嘿,别慌!我帮你一步步搞定这两个问题——先解决那个烦人的PDF导出错误,再把表单提交的问题修好,毕竟这是你的期末项目嘛😉


第一步:禁用CKEditor的PDF导出插件(解决控制台错误)

你遇到的exportpdf-no-token-url错误,是因为CKEditor默认加载了PDF导出插件,但这个插件需要配置token URL,而你根本不需要这个功能。最简单的办法就是直接把这个插件移除:

修改你的settings.py里的CKEDITOR_CONFIGS,添加removePlugins参数:

CKEDITOR_CONFIGS = {
    'default': {
        'height': 800,
        'width': 1000,
        # 直接移除PDF导出插件,彻底解决错误
        'removePlugins': 'exportpdf',
    },
}

保存后重启Django服务,再刷新前端页面,那个控制台错误应该就消失了。


第二步:修复表单提交功能

你的表单提交不工作,主要是views.py里的逻辑有问题,还有前端的提交按钮写法不对。咱们一步步改:

1. 修正views.py的表单处理逻辑

现在你的write_post函数不管GET还是POST都直接用request.POST初始化表单,这会导致GET请求时表单状态异常,而且完全没处理提交后的保存逻辑。改成这样:

from django.shortcuts import redirect, render
from .forms import Post_Form

def write_post(request):
    if request.method == 'POST':
        # POST请求时,要传入request.FILES(因为你用了RichTextUploadingField,支持文件上传)
        form = Post_Form(request.POST, request.FILES)
        if form.is_valid():
            # 先不直接保存,因为要关联当前登录的用户
            article = form.save(commit=False)
            article.user = request.user  # 把当前用户绑定到文章的user字段
            article.save()
            # 保存成功后重定向到你想展示的页面,比如文章列表页(记得替换成你自己的URL名称)
            return redirect('article_list')
    else:
        # GET请求时,初始化一个空表单
        form = Post_Form()
    
    return render(request, 'write_post.html', { 'form': form, })

2. 修正前端的提交按钮

你现在用的是<div type=submit>,div标签根本没有type=submit的属性,点击它不会触发表单提交!改成标准的button标签:

<form action="" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.media }}
    {{ form.as_p }}
    <!-- 把div改成button,type设为submit -->
    <button type="submit" class="btn btn-info">Submit</button>
</form>

(可选但推荐)确保CKEditor编辑器正确渲染

你的forms.py里给body字段用了普通的Textarea widget,虽然可能现在能显示CKEditor,但最好直接指定CKEditor的上传widget,避免潜在冲突:

from django.forms import TextInput
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from .models import Article

class Post_Form(ModelForm):
    class Meta:
        model = Article
        exclude = ['user']
        widgets = {
            'title': TextInput(attrs={'class': 'form-control', 'id': 'title' }),
            # 替换成CKEditor的上传widget
            'body': CKEditorUploadingWidget(),
        }

做完这些步骤后,重启Django服务,再测试一下:前端页面不会再出现PDF导出的错误,点击Submit按钮也能正常保存文章啦!

内容的提问来源于stack exchange,提问作者yến nhi nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:14:05