博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
chapter 13 xadmin 优化
阅读量:2345 次
发布时间:2019-05-10

本文共 4427 字,大约阅读时间需要 14 分钟。

目录

 


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

users.xadmin

from xadmin.plugins.auth import UserAdminfrom .models import EmailVerifyRecord,Banner,UserProfileclass 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 = 0class 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类型的文件

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 xadminfrom xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminViewfrom DjangoUeditor.models import UEditorFieldfrom DjangoUeditor.widgets import UEditorWidgetfrom django.conf import settingsclass 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  = '' %(settings.STATIC_URL + "ueditor/ueditor.config.js")        js += '' %(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的自动转义才能正常显示

{% autoescape off %} {
{ course.detail }} {% endautoescape %}

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

13.6excel导入插件

 

 

 

转载地址:http://irnvb.baihongyu.com/

你可能感兴趣的文章
metronic 1.5
查看>>
unity3d 4 assert store
查看>>
tab bar control 注意事项
查看>>
sql优化部分总结
查看>>
IDEA运行时动态加载页面
查看>>
UML总结(对九种图的认识和如何使用Rational Rose 画图)
查看>>
js遍历输出map
查看>>
easeui分页
查看>>
20个非常有用的Java程序片段
查看>>
Enterprise Architect使用教程
查看>>
Enterprise Architect 生成项目类图
查看>>
浅入深出 MySQL 中事务的实现
查看>>
UML总结(对九种图的认识和如何使用Rational Rose 画图)
查看>>
Java中使用HttpRequest获取用户真实IP地址端口
查看>>
easyUI下拉列表点击事件的使用
查看>>
js遍历map
查看>>
单例模式
查看>>
JDBC连接数据库核心代码
查看>>
java生成随机汉字
查看>>
Java反射的基本应用
查看>>