chapter 13 xadmin 优化

目录

 

13.1 将userProfile 用户信息全览注册到xadmin中

13.3 后台管理:

13.5后台富文本编辑器


13.1 将userProfile 用户信息全览注册到xadmin中

users.xadmin

from xadmin.plugins.auth import UserAdmin
from .models import EmailVerifyRecord,Banner,UserProfile

class UserProfileAdmin(UserAdmin):
    pass


'''
要先将UserProfile卸载否则会出现以下错误
xadmin.sites.AlreadyRegistered: The model UserProfile is already registered
'''
xadmin.site.unregister(UserProfile)#
xadmin.site.register(UserProfile,UserProfileAdmin)

13.3 后台管理:

在courses.xadmin.py

class CourseAdmin(object):
    list_display = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time']
    list_filter = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time']
    search_fields = ['name','desc','detail','degree','student','fav_nums','image','click_nums']
    ordering = ['-click_nums']#后台显示时,按照点击数进行倒序排列
    readonly_fields = ['click_nums']#设置click_nums为只读后台不可更改

将外键下拉改为搜索模式:

class CourseOrgAdmin(object):#课程机构
    list_display = ["name", "desc", "click_nums","fav_nums","img","address","city","add_time"]
    list_filter =["name", "desc", "click_nums","fav_nums","img","address","city__name","add_time"]
    search_fields =["name", "desc", "click_nums","fav_nums","img","address","city__name"]
    relfield_style = 'fk-ajax'#当CourseOrg作为其他字段的外键的时候,在后台其他数据表不再使用下拉的方式选择此数据表,而是搜索的方式出现

后台配置:某个数据表,当其他数据表将其作为外键时,可以将其他数据表注册经inlines方便后台在配置当前数据表是客体同时配置其他数据表

class LessonInline(object):
    model = Lesson
    extra = 0
    
    
class CourseResourceInline(object):
    model = CourseResource
    extra = 0


class CourseAdmin(object):
    list_display = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time']
    list_filter = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time']
    search_fields = ['name','desc','detail','degree','student','fav_nums','image','click_nums']
    ordering = ['-click_nums']#后台显示时,按照点击数进行倒序排列
    readonly_fields = ['click_nums']#设置click_nums为只读后台不可更改
    '''
    当前数据表作为其他数据表外键时,可以将其他数据表注册到当前数据表的inlines中
    这样在后台管理xadmin中就可以在配置当前数据表时就一起配置其他将当前数据表作为外键的数据表
    注意:
        1、这样的配置不可层叠多个,只能有上下两层
        2、一个数据表可以同时将多个将其作为外键的数据表一起配置
    '''
    inlines = [LessonInline,CourseResourceInline]

13.4 将一个数据表在后台通过筛选 注册成多个数据表,注意好像只能筛选 bool类型的文件

http://www.cnblogs.com/derek1184405959/p/8682250.html

13.5后台富文本编辑器

地址:https://github.com/twz915/DjangoUeditor3/

解压后,

直接cd到当前文件夹下python setup.py 安装(注意要转到虚拟环境下安装)

注意:直接pip install DjangoUeditor的方法会出问题

(2)settings中添加app

INSTALLED_APPS = [
    'DjangoUeditor',
]

(3)MxOnline/urls.py

   # 富文本编辑器url
    path('ueditor/',include('DjangoUeditor.urls' )),

 (4)course/models.py中Course修改detail字段

class Course(models.Model):
    # detail = models.TextField("课程详情")
    detail = UEditorField(verbose_name=u'课程详情', width=600, height=300, imagePath="courses/ueditor/",
                          filePath="courses/ueditor/", default='')

(5)xadmin/plugs目录下新建ueditor.py文件,代码如下

复制代码

import xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings


class XadminUEditorWidget(UEditorWidget):
    def __init__(self, **kwargs):
        self.ueditor_options = kwargs
        self.Media.js = None
        super(XadminUEditorWidget,self).__init__(kwargs)


class UeditorPlugin(BaseAdminPlugin):

    def get_field_style(self, attrs, db_field, style, **kwargs):
        if style == 'ueditor':
            if isinstance(db_field, UEditorField):
                widget = db_field.formfield().widget
                param = {}
                param.update(widget.ueditor_settings)
                param.update(widget.attrs)
                return {'widget':XadminUEditorWidget(**param)}
        return attrs

    def block_extrahead(self, context, nodes):
        js  = '<script type="text/javascript" src="%s"></script>' %(settings.STATIC_URL + "ueditor/ueditor.config.js")
        js += '<script type="text/javascript" src="%s"></script>' %(settings.STATIC_URL + "ueditor/ueditor.all.min.js")
        nodes.append(js)

xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)

复制代码

(6)xadmin/plugs/__init__.py里面添加ueditor插件

PLUGINS = (
   'ueditor',
)

(7)course/adminx.py中使用

class CourseAdmin(object):
    #detail就是要显示为富文本的字段名
    style_fields = {"detail": "ueditor"}

(8)course-detail.html

在模板中必须关闭Django的自动转义才能正常显示

<div class="tab_cont tab_cont1">
     {% autoescape off %}
     {{ course.detail }}
     {% endautoescape %}
     </div>

(9)插件xadmin下面某个文件夹中的width和height参数会报错,直接删除所有和这两个参数相关的代码就OK了

13.6excel导入插件

猜你喜欢

转载自blog.csdn.net/bobbykey/article/details/81109578
今日推荐