Django3.2 ckeditor根据ID修改博客文章

本项目使用的Models请参考上篇

ckeditor富文本编辑器(Django 3.2)_云淡风轻58的博客-CSDN博客

博客首页

后台博客列表

models.py

from ckeditor_uploader.fields import RichTextUploadingField
from django.db import models
from user.models import Admin
class Category(models.Model):
    categoryName=models.CharField('分类',max_length=10)
    class Meta:
        verbose_name = '分类'
        verbose_name_plural = '分类'

    def __str__(self):
        return self.categoryName

class Blog(models.Model):
    title = models.CharField(max_length=50)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='分类')
    author = models.ForeignKey(Admin, on_delete=models.CASCADE, verbose_name='作者')
    createdTime = models.DateTimeField('发布时间', auto_now_add=True)
    readCount = models.CharField('阅读数量', max_length=10)
    replyCount = models.CharField('回复数量', max_length=10)
    content=RichTextUploadingField(verbose_name='正文')

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章'

    def __str__(self):
        return self.title

class Info(models.Model):
    nickname = models.CharField(max_length=30)
    homePage = models.CharField(max_length=50)
    address = models.CharField(max_length=50)
    job = models.CharField(max_length=30)

    class Meta:
        verbose_name = '个人档案'
        verbose_name_plural = '档案'

    def __str__(self):
        return self.nickname

editBlog.html

<!DOCTYPE html>
<html lang="en">
<head>
    {% load static %}
    <meta charset="UTF-8">
    <title>Ckeditor编辑器</title>
    <link rel="stylesheet" href="{% static 'layui/css/layui.css' %}" media="all">
    <script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
    <script src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
</head>
<body>
<div class="layui-fluid" style="margin-top: 10px;">
    <form class="layui-form" method="post" action="/update/" enctype="multipart/form-data">
        {% csrf_token %}
            <input type="hidden" name="id" value="{{ blog.id }}">
            <div class="layui-form-item layui-col-xs6">
                <label class="layui-form-label">标题</label>
                <div class="layui-input-block">
                  <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input" width="300px" value="{{ blog.title }}">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">分类</label>
                <div class="layui-input-inline">
                  <select name="category" >
                    <option value="{{ blog.category }}">{{ blog.category }}</option>
                   {% for c in categorys %}
                    <option value="{{ c.categoryName }}">{{ c.categoryName }}</option>
                   {% endfor %}
                  </select>
                </div>
            </div>
            <div class="layui-form-item layui-form-text layui-col-xs6">
                <label class="layui-form-label">内容</label>
                <div class="layui-input-block">
                    <textarea type="text" name="content">
                        {{ blog.content | safe }}
                    </textarea>

                </div>
            </div>
            <div class="layui-form-item">
                <div class="layui-input-block">
                  <button type="submit" class="layui-btn" lay-submit="" lay-filter="demo1">发布</button>
                  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
    </form>
</div>
<script src="{% static 'layui/layui.js' %}"></script>
<script type="text/javascript">
    layui.use('form', function(){
      var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
      var res = '{{ res }}';
		if (res == 'ok') {
			layui.use('layer', function() {
				var layer = layui.layer;
				layer.msg('操作成功');
			});

		}
		if (res == 'fail') {
			layui.use('layer', function() {
				var layer = layui.layer;
				layer.msg("操作成功");
			});
		}
      form.render();
    });
</script>
<script type="text/javascript">
    CKEDITOR.replace( 'content',{width: 700 , height: 400 });
</script>
</body>
</html>

 views.py

def editBlog(request,id):
    blog = Blog.objects.get(id=id)
    categorys = Category.objects.all()
    return render(request, 'editBlog.html',locals())

urls.py

urlpatterns = [
    path('editBlog/<str:id>', views.editBlog),
]

settings.py中配置ckeditor

CKEDITOR_CONFIGS = {
'default': {
        'toolbar': (
            ['div','Source','-','Save','NewPage','Preview','-','Templates'],
            ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],
            ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
            ['Form','Checkbox','Radio','TextField','Textarea','Select','Button', 'ImageButton','HiddenField'],
            ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
            ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
            ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
            ['Link','Unlink','Anchor'],
            ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
            ['Styles','Format','Font','FontSize'],
            ['TextColor','BGColor'],
            ['Maximize','ShowBlocks','-','About', 'pbckcode'],
            ['Blockquote', 'CodeSnippet'],
        ),
        'width': '800',
        'height':'400',
        # 添加按钮在这里
        'toolbar_Custom': [
            ['NumberedList', 'BulletedList'],
            ['Blockquote', 'CodeSnippet'],
        ],
       # 插件
        'extraPlugins': ','.join(['codesnippet','widget','lineutils',]),
    },
}

根据ID编辑博客内容

     这样虽然功能是实现了,但是有个问题不能上传图片,暂时没有找到解决方法,如果有知情者请不吝赐教,多谢。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云淡风轻58

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值