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

Django Quill Editor插入超链接自动拼接本地域名跳转异常

问题描述
  • Django admin 后台集成 Quill Editor 后,输入www.example.com格式的超链接时,系统不会生成正确的外部链接,模板渲染后的地址被拼接为localhost:8000/plants/www.example.com,点击后跳转至无效页面,预期效果为直接跳转至对应外部站点。
相关背景
  • 已查阅 django-quill-editor 官方文档,未找到对应配置项,无法关闭 QuillEditor 插入超链接时自动拼接项目域名的行为。
  • 怀疑问题与urls.py配置相关,当前项目 plants 目录下的根路由配置如下:
urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('', include('pages.urls')),
    path('plants/', include('plants.urls')),
]
  • Django admin 后台 Quill 编辑器输入 URL 的操作界面:
    Quill编辑器后台输入界面
  • 模板页实际渲染的错误链接效果(鼠标悬浮链接时,浏览器左下角显示拼接后的错误地址):
    模板渲染错误链接效果
解决方案

这个问题和路由配置完全无关,不需要修改urls.py任何内容,根因是Quill编辑器的链接默认逻辑:当输入的链接不带http:///https://协议头时,会被识别为站点内的相对路径,自然会拼接当前页面的路径前缀。
可以根据需求选择以下任意一种解决方式:

  • 临时快速解决:插入外部链接时手动补全协议头,直接输入https://www.example.com,编辑器会自动识别为绝对外链,不会再拼接本地路径。
  • 永久自动处理:重写Quill工具栏的链接处理逻辑,用户输入链接时自动检测协议头,缺失时自动补全https://,参考配置如下:
const quill = new Quill('#editor', {
  modules: {
    toolbar: {
      handlers: {
        link(value) {
          if (value) {
            const href = prompt('请输入链接地址:');
            if (!href) return false;
            // 自动补全缺失的协议头
            const formatUrl = /^https?:\/\//i.test(href) ? href : `https://${href}`;
            const range = this.quill.getSelection(true);
            this.quill.format('link', formatUrl);
          } else {
            this.quill.format('link', false);
          }
        }
      }
    }
  },
  // 其余原有Quill配置保持不变
  theme: 'snow'
});

如果你使用的是django-quill-editor内置的默认初始化逻辑,只需要在页面中重写默认的Quill实例初始化代码,替换掉默认的link工具栏处理函数即可,不需要修改后端任何代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:42:17