python3.8.10和Django3.2.8环境下用DjangoUEditor 1.8.143的安装以及遇到的问题和解决方法

很多时候我们都在python和Django3.2.8环境下使用DjangoUEditor实现富文本的使用和编辑,今晚踩坑比较多,小结一下,或许对各位大虾有点小小的启发。

1、DjangoUEditor的安装

1.1、DjangoUEditor一般需要自行下载,各位可以从github.com(国外)或者gitee.com(国内)中找到,版本稍有些早。

1.2、安装

DjangoUEditor安装包解压缩后,进入到DjangoUEditor文件夹,可以看到有个setup.py的文件执行python setup.py install 进行安装即可。

python setup.py install 

2、DjangoUEditor在项目中的使用

2.1、将DjangoUEditor文件夹中的DjangoUeditor文件夹复制到项目目录中;

2.2、打开项目目录的settings.py,在INSTALLED_APPS项中增加:

INSTALLED_APPS = [
    ......
    'DjangoUeditor',  #添加富文本编辑器
    ......
]

2.3、打开项目目录的urrls.py,增加DjangoUEditor路由

urlpatterns = [
    ...
    path('ueditor/',include('DjangoUeditor.urls')), #富文本编辑器
    ...
]

2.4、在项目中的某个应用中,打开models.py,定义一个DjangoUEditor的字段

from django.db import models
from DjangoUeditor.models import UEditorField


# Create your models here.


class MyNew(models.Model):
    description = UEditorField(u'内容',   #该字段在后台系统中的别名
                               default='',  
                               width=1000,  #在后台系统中编辑界面的宽度
                               height=300,  #在后台系统中编辑界面的长度
                               imagePath='news/images/',   #用户上传图片的路径
                               filePath='news/files/')   #用户删除文件的路径
    def __str__(self):
        return self.title

    class Meta:
        verbose_name = "测试"
        verbose_name_plural = verbose_name

2.5、在应用的admin.py中添加如下内容:

from django.contrib import admin
from .models import MyNew

# Register your models here.

class MyNewAdmin(admin.ModelAdmin):
    style_fields = {'description': 'ueditor'}


admin.site.register(MyNew, MyNewAdmin)

以上做完以后,就可以在后台使用DjangoUEditor了。

但是......

上传图形出错、上传视频出错......呜呜呜........

3、需要修改的几处代码

原因:django3.x以后six、urllib、south都已经被移除,所以需要修改部分代码

 3.1、DjangoUeditor\widgets.py

from django.utils.six import string_types  
修改为:
from six import string_types

3.2、DjangoUeditor\view.py

from django.utils import six

from django.utils.six.moves.urllib.request import urlopen
from django.utils.six.moves.urllib.parse import urljoin

改为:

import six
from six.moves.urllib.request import urlopen
from six.moves.urllib.parse import urljoin

3.3、DjangoUeditor\commands.py

from django.utils.six.moves.urllib.parse import urljoin

改为:

from urllib.parse import urljoin

3.4、DjangoUeditor\utils.py

from django.utils import six

改为

import six

3.5、DjangoUeditor\models.py

# 以下支持south
try:
    from south.modelsinspector import add_introspection_rules
    add_introspection_rules([], ["^DjangoUeditor\.models\.UEditorField"])
except:
    pass

需要安装south控件,才能更好地支持新版本的浏览器:

pip install south

3.6、修改django安装目录下的\forms\boundfield.py文件:

...
    def as_widget(self, widget=None, attrs=None, only_initial=False):
        """
        Render the field by rendering the passed widget, adding any HTML
        attributes passed as attrs. If a widget isn't specified, use the
        field's default widget.
        """
        widget = widget or self.field.widget
        if self.field.localize:
            widget.is_localized = True
        attrs = attrs or {}
        attrs = self.build_widget_attrs(attrs, widget)
        if self.auto_id and 'id' not in widget.attrs:
            attrs.setdefault('id', self.html_initial_id if only_initial else self.auto_id)
        return widget.render(
            name=self.html_initial_name if only_initial else self.html_name,
            value=self.value(),
            attrs=attrs,
            #renderer=self.form.renderer,   #此行需要进行注释
        )
...

好吧!至此,至少我的DjangoUeditor可以正常使用了。

以上经验仅供参考!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大 白老鼠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值