欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python——django引入富文本编辑器(tinymce)

程序员文章站 2022-07-14 22:39:25
...

前言:

     借助富文本编辑器,能够编辑出来一个包含html的页面,从而页面的显示效果,相对而言很大程度上扩展了网站功能,本篇文件讲解python--django--tinymce的使用;

具体介绍:

     1、环境:首先声明我本地使用的不是上篇文章中标准的配对环境,我使用环境是python(3.7),django(1.8.12),tinymce(2.6);

           原则上django(1.8.12)搭配python(3.5或者3.4)以及对应tinymce2.4是比较好的版本,我这里由于想使用python3.7虚拟环境中其它东西所以没做调整,建议读者按照标准建议环境配置;

具体使用流程:

安装tinymce,或者你调整相关虚拟环境中python和django对应版本吧,直接使用pip在线安装即可,或者下载源码包安装:

1、解压
tar zxvf django-tinymce-2.4.0.tar.gz
2、进入解压目录安装
python setup.py install

 接下来车清路熟的增加项目或者应用咯,不做啰嗦,直接开始项目中配置需要使用的应用和tinymce配置:

项目settings中配置:

1、应用注册是必须的;(修改成你需要的应用)
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'booktest',
)
2、富文本编辑器配置:
#编辑器配置
TINMCE_DEFAULT_CONFIG = {
    'theme':'advanced',
    'width':600,
    'height':400,
}
3、templates配置:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
4、静态文件目录配置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

项目urls中做应用转接处理:(项目下的urls.py文件)

1、项目的urls.py文件
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^',include('booktest.urls',namespace='booktest'))
]

   进入应用目录后创建需要使用富文本的模型类:(应用中的models.py文件)

from django.db import models
from tinymce.models import HTMLField        #重点需要先导入

class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)
    hgender = models.BooleanField(default=True)
    isDelete = models.BooleanField(default=False)
    hcontent = HTMLField()                  #使用的是HTMLField类型

进入应用的admin.py文件注册模型类,你也可以选择不注册,如果想admin中使用建议注册;

from booktest.models import BookInfo,HeroInfo

# Register your models here.
class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['btitle','bpub_date','bread','bcomment']

admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo)             #注册模型类

准备静态文件:切回到项目创建templates/admin/目录,创建static/js(相关css,images自行创建)

导入到tinymce需要使用的js文件,在你安装tinymce的包中有依赖的js文件:tiny_mce.js、langs、themes

Python——django引入富文本编辑器(tinymce)

templates/admin目录下创建需要使用的静态文件:(admin不是必须的,根据自己需要配置哈,我是准备重新开发管理面准备的)

编写editor.html文件:

<!DOCTYPE html>
<html lang="en">
{% load staticfiles %}
<head>
    <meta charset="UTF-8">
    <title>editor_admin</title>
    <script type="text/javascript" src="{% static 'js/tiny_mce.js' %}"></script>
    <script>
        tinyMCE.init({
            'mode':'textareas',
            'theme':'advanced',
            'width':400,
            'height':100
        })
    </script>
</head>
<body>
    <form method="post" action="content">
        {% csrf_token %}
        <input type="text" name="hname">
        <br>
        <textarea name="hcontent" id="" cols="30" rows="10">
            测试使用
        </textarea>
        <br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

编写content提交后展示页面,新建content.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>content</title>
</head>
<body>
姓名:{{ hero.hname }}
<hr>
{% autoescape off %}
    {{ hero.hcontent }}
{% endautoescape %}
</body>
</html>

应用中现在可以开始写路由和视图了;

先写路由吧:

切换到应用下urls.py文件,注意不是刚才的项目urls.py哈:

from booktest import views

urlpatterns = [
    url(r'^index$',views.index,name='index' ),       #首页测试接口路由,自行需要编写
    url(r'^tinymce',views.editor),                   #富文本编辑展示接口路由
    url(r'^content$',views.content),                 #富文本编辑保存后查看接口路由
]

切换到views中编写视图:

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from booktest.models import HeroInfo       #导入视图,保存数据存入数据库
# Create your views here.

#/editor
def editor(request):          #展示页面
    return render(request,'admin/editor.html')

#/content
def content(request):
    hname = request.POST['hname']
    hcontent = request.POST['hcontent']
    heroinfo = HeroInfo()
    heroinfo.hname = hname
    heroinfo.hcontent = hcontent
    heroinfo.save()
    return render(request,'admin/content.html',{'hero':heroinfo})

具体效果如下:

Python——django引入富文本编辑器(tinymce)

保存后结果:

Python——django引入富文本编辑器(tinymce)

数据库中是带文本样式存储的,如下:

Python——django引入富文本编辑器(tinymce)