首页 > 其他分享 >Django博客开发教程:使用富文本编辑器添加数据

Django博客开发教程:使用富文本编辑器添加数据

时间:2023-08-09 16:55:32浏览次数:34  
标签:文本编辑 DjangoUeditor settings py 教程 Django urls path

在Django admin后台添加数据的时候,文章内容文本框想发布一篇图文并茂的文章需就得手写Html代码,这十分吃力,也没法上传图片和文件。这显然不是我等高大上程序猿想要的。

2.jpg

为提升效率,我们可以使用富文本编辑器添加数据。支持Django的富文本编辑器很多,这里我推荐使用DjangoUeditor,Ueditor是百度开发的一个富文本编辑器,功能强大。下面教大家安装如何使用DjangoUeditor。

1、首先我们先下载DjangoUeditor包。点击下面的链接进行下载!下载完成然后解压到项目根目录里。

DjangoUeditor.zip

2、settings.py里注册APP,在INSTALLED_APPS里添加'DjangoUeditor',。

myblog/settings.y
INSTALLED_APPS = [
    'django.contrib.admin',
    ....
    'DjangoUeditor', #注册APP应用
]

3、myblog/urls.py里添加url。

myblog/urls.py
...
from django.urls import path, include
#留意上面这行比原来多了一个include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.hello),
    path('ueditor/', include('DjangoUeditor.urls')), #添加DjangoUeditor的URL
]

4、修改blog/models.py里需要使用富文本编辑器渲染的字段。这里面我们要修改的是Article表里的body字段。

把原来的:

blog/models.py

body = models.TextField()

修改成:

blog/models.py
from DjangoUeditor.models import UEditorField #头部增加这行代码导入UEditorField

body = UEditorField('内容', width=800, height=500, 
                    toolbars="full", imagePath="upimg/", filePath="upfile/",
                    upload_settings={"imageMaxSize": 1204000},
                    settings={}, command=None, blank=True
                    )

留意里面的imagePath="upimg/", filePath="upfile/" 这两个是图片和文件上传的路径,我们上传文件,会自动上传到项目根目录media文件夹下对应的upimg和upfile目录里,这个目录名可以自行定义。有的人问,为什么会上传到media目录里去呢?那是因为之前我们在基础配置文章里,设置了上传文件目录media。

上面步骤完成后,我们启动项目,进入文章发布页面。提示出错:

render() got an unexpected keyword argument 'renderer'

3.jpg

错误页面上有提示,出错的地方是下面文件的93行。

F:\course\myblog\myblogvenv\lib\site-packages\django\forms\boundfield.py in as_widget, line 93

我这里使用的是最新版本的Django2.1.1所以报错,解决办法很简单。打开这个文件的93行,注释这行即可。

4.jpg

修改成之后,重新刷新页面,就可以看到我们的富文本编辑器正常显示。

5.jpg

留意,如果我们在富文本编辑器里,上传图片,在编辑器内容里不显示上传的图片。那我们还需要进行如下设置,打开myblog/urls.py文件,在里面输入如下代码:

myblog/urls.py
....
from django.urls import path, include, re_path
#上面这行多加了一个re_path
from django.views.static import serve
#导入静态文件模块
from django.conf import settings
#导入配置文件里的文件上传配置

urlpatterns = [
    path('admin/', admin.site.urls),
    ....
    re_path('^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),#增加此行
]

设置好了之后,图片就会正常显示。这样我们就可以用DjangoUeditor富文本编辑器发布图文并茂的文章了。

 

标签:文本编辑,DjangoUeditor,settings,py,教程,Django,urls,path
From: https://www.cnblogs.com/yoloooo/p/17617263.html

相关文章

  • Python迭代器的__iter__和__next__详细教程
    在Python中,迭代器是一个实现了__iter__和__next__方法的对象。__iter__方法返回迭代器对象自身,而__next__方法返回下一个元素。换句话说,迭代器是一个可以逐个返回元素的对象。下面是一个简单的迭代器示例,演示了如何实现__iter__和__next__方法:classMyIterator:d......
  • 无涯教程-Perl - getpriority函数
    描述此函数返回进程(PRIO_PROCESS),进程组(PRIO_PGRP)或用户(PRIO_USER)的当前优先级。参数WHICH指定要为PRIO_PROCESS,PRIO_PGRP或PRIO_USER之一设置优先级的实体,WHO是要设置的进程ID或用户ID。WHO的值为0定义了当前流程,流程组或用户。这会在不支持系统getpriority()函数的......
  • Python迭代器的__iter__和__next__详细教程
    在Python中,迭代器是一个实现了__iter__和__next__方法的对象。__iter__方法返回迭代器对象自身,而__next__方法返回下一个元素。换句话说,迭代器是一个可以逐个返回元素的对象。下面是一个简单的迭代器示例,演示了如何实现__iter__和__next__方法:classMyIterator:......
  • Django之Model操作数据库
    ORM简介O(objects):类和对象。R(Relation):关系,关系数据库中的表格。M(Mapping):映射。DjangoORM框架的功能:建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。根据设计的模型类生成数据库中的表格。通过方便的配置就可以进行数据库的切换。数据库的......
  • django ORM操作
    fromdjango.contrib.auth.modelsimportUserfromdjango.db.modelsimportQfromdjango.db.models.functionsimportLowerfromapp.modelsimport *添加操作a、使用create方式方式一:Publish.objects.create("name"="人民出版社",city="北京"}方式二:......
  • 《LYNUOJ使用简明教程》
    一:注册,登录二:选择团队并加入 三:进入团队开始训练四:进入题目页面选择合适的语言并粘贴代码右下角在线自测可以评测你在在线编译器上代码是否正确提交评测后左边或出现五:更多评测状态详情......
  • django 模板
    模板继承模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量{%extends'base.html'%}base.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>{%blocktitle%}{%endblock%}<......
  • django响应html
    fromdjango.templateimportTemplate,Context,loaderdefindex(req): t=loader.get_template("index.html") c=Context({}) #returnHttpResponse(loader.get_template("index.html").render({})) returnHttpResponse(t.render(c))def......
  • 推导分页的原理,分页类的使用,cookie和session的介绍(重要),Django操作cookie
    推导分页的原理分页:当我们要展示的数据特别多的时候,一页展示不完,这个时候我们需要把要展示的数据分成多页展示分页中需要的几个参数:1.总数据有多少条2.每页展示多少条数据(自己规定的20)3.一共展示多少页4.总页数=总数据量/每页展示多少条数据5.当前第几页(前端......
  • django自定义过滤器
    https://docs.djangoproject.com/zh-hans/3.1/howto/custom-template-tags/代码布局自定义的tags和filters会保存在模块名为 templatetags 的目录内。模块文件的名字即稍候你用来加载tags的名字,所以小心不要采用一个可能与其它应用自定义的tags和filters冲突的名......