栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django之富文本编辑器(二十四)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django之富文本编辑器(二十四)

富文本编辑器


借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面。此处以tinymce为例,其它富文本编辑器的使用也是类似的。

在虚拟环境中安装包。

pip install django-tinymce==2.6.0
安装完成后,可以使用在Admin管理中,也可以自定义表单使用。

示例


1)在test6/settings.py中为INSTALLED_APPS添加编辑器应用。

INSTALLED_APPS = (
    ...
    'tinymce',
)
2)在test6/settings.py中添加编辑器配置。

TINYMCE_DEFAULT_ConFIG = {
    'theme': 'advanced',
    'width': 600,
    'height': 400,
}
3)在test6/urls.py中配置编辑器url。

urlpatterns = [
    ...
    url(r'^tinymce/', include('tinymce.urls')),
]
接下来介绍在Admin页面、自定义表单页面的使用方式

在Admin中使用


1)在booktest/models.py中,定义模型的属性为HTMLField()类型。

from django.db import models
from tinymce.models import HTMLField

class GoodsInfo(models.Model):
    gcontent=HTMLField()
2)生成迁移文件。

python manage.py makemigrations

 3)执行迁移。

python manage.py migrate
4)在本示例中没有定义其它的模型类,但是数据库中有这些表,提示是否删除,输入no后回车,表示不删除,因为其它的示例中需要使用这些表。

 5)迁移完成,新开终端,连接mysql,使用test2数据库,查看表如下:

6)发现并没有表GoodsInfo,解决办法是删除迁移表中关于booktest应用的数据。

delete from django_migrations where app='booktest';
7)再次执行迁移。

python manage.py migrate
成功完成迁移,记得不删除no。

 8)在booktest/admin.py中注册模型类GoodsInfo

from django.contrib import admin
from booktest.models import *
class GoodsInfoAdmin(admin.ModelAdmin):
    list_display = ['id']

admin.site.register(GoodsInfo,GoodsInfoAdmin)
9)运行服务器,进入admin后台管理,点击GoodsInfo的添加,效果如下图

 在编辑器中编辑内容后保存。

自定义使用


1)在booktest/views.py中定义视图editor,用于显示编辑器。

def editor(request):
    return render(request, 'booktest/editor.html')
2)在booktest/urls.py中配置url。

    url(r'^editor/',views.editor),
3)在项目目录下创建静态文件目录如下图:

 4)打开py_django虚拟环境的目录,找到tinymce的目录。

/home/python/.virtualenvs/py_django/lib/python3.5/site-packages/tinymce/static/tiny_mce
5)拷贝tiny_mce_src.js文件、langs文件夹以及themes文件夹拷贝到项目目录下的static/js/目录下。

 6)在test6/settings.py中配置静态文件查找路径。

STATICFILES_DIRS=[
    os.path.join(base_DIR,'static'),
]
7)在templates/booktest/目录下创建editor.html模板。



    自定义使用tinymce
   
   



   


8)运行服务器,在浏览器中输入如下网址:

http://127.0.0.1:8000/editor/
浏览效果如下图:

显示


通过富文本编辑器产生的字符串是包含html的。 在数据库中查询如下图:

 在模板中显示字符串时,默认会进行html转义,如果想正常显示需要关闭转义。

问:在模板中怎么关闭转义

方式一:过滤器safe
方式二:标签autoescape off
1)在booktest/views.py中定义视图show,用于显示富文本编辑器的内容。

from booktest.models import *
...
def show(request):
    goods=GoodsInfo.objects.get(pk=1)
    context={'g':goods}
    return render(request,'booktest/show.html',context)
2)在booktest/urls.py中配置url。

    url(r'^show/', views.show),
3)在templates/booktest/目录下创建show.html模板。



    展示富文本编辑器内容


id:{{g.id}}



{%autoescape off%}
{{g.gcontent}}
{%endautoescape%}


{{g.gcontent|safe}}

4)运行服务器,在浏览器中输入如下网址:

http://127.0.0.1:8000/show/
浏览效果如下图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号