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

Django 1.11.10中Martor 1.2.5前端编辑器工具栏不显示求助

在Django前端博客编辑页添加Martor工具栏的解决方案

我帮你梳理下具体的实现步骤,按照这个流程来应该就能让前端编辑器和Admin里显示同款Martor工具栏:

1. 先确保forms.py里使用Martor专属字段

你需要把博客内容字段从普通的TextField替换成Martor提供的MartorFormField,这样表单才会关联编辑器组件。修改后的forms.py示例:

from django import forms
from martor.fields import MartorFormField
from .models import BlogPost  # 替换成你的博客模型

class BlogPostEditForm(forms.ModelForm):
    # 用MartorFormField替代原有的content字段
    content = MartorFormField()

    class Meta:
        model = BlogPost
        fields = ['title', 'content', 'category']  # 保留你需要的字段

2. 前端模板正确加载Martor资源并渲染表单

前端模板需要加载Martor的CSS、JS以及必要的依赖(比如jQuery),最简单的方式是使用{{ form.media }}自动引入这些资源。模板示例:

{% load static %}
{% load martor_tags %}

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>编辑博客</title>
    <!-- 自动引入Martor的样式和脚本 -->
    {{ form.media }}
</head>
<body>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <div class="form-group">
            {{ form.title.label_tag }}
            {{ form.title }}
        </div>
        <div class="form-group">
            {{ form.content.label_tag }}
            {{ form.content }}  <!-- 这里会渲染带工具栏的编辑器 -->
        </div>
        <button type="submit">保存文章</button>
    </form>
</body>
</html>

注意:如果你的模板里已经手动引入了jQuery,要避免重复引入,Martor默认会包含jQuery,你可以在settings里通过MARTOR_ENABLE_CONFIGS的jquery项控制是否自动引入。

3. 同步settings.py里的Martor配置(确保和Admin一致)

要让前端工具栏和Admin里的样式、按钮完全一致,需要在settings.py里配置Martor的工具栏按钮和其他参数,示例配置:

INSTALLED_APPS = [
    # ... 其他app
    'martor',
]

# Martor核心配置
MARTOR_ENABLE_CONFIGS = {
    'imgur': 'true',
    'mention': 'false',
    'jquery': 'true',  # 开启自动引入jQuery
    'living': 'false',
    'spellcheck': 'false',
    'hljs': 'true',
}

# 配置工具栏显示的按钮(和Admin默认一致)
MARTOR_TOOLBAR_BUTTONS = [
    'bold', 'italic', 'horizontal', 'heading', 'pre-code',
    'blockquote', 'unordered-list', 'ordered-list',
    'link', 'image-link', 'image-upload', 'emoji',
    'direct-mention', 'toggle-maximize', 'help'
]

4. 确保静态资源正确收集

运行以下命令收集Martor的静态文件,避免前端加载资源失败:

python manage.py collectstatic

常见问题排查

如果工具栏还是不显示,可以检查这几点:

  • 打开浏览器开发者工具,查看网络请求,确认Martor的CSS和JS文件是否成功加载(没有404错误);
  • 确认模板里的{% load martor_tags %}标签已经加载;
  • 检查视图函数里是否正确实例化了我们修改后的表单类,比如:
    from .forms import BlogPostEditForm
    
    def edit_post(request, pk):
        post = get_object_or_404(BlogPost, pk=pk)
        if request.method == 'POST':
            form = BlogPostEditForm(request.POST, instance=post)
            # ... 保存逻辑
        else:
            form = BlogPostEditForm(instance=post)
        return render(request, 'blog/edit_post.html', {'form': form})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:14:46