慕课网学习总结二 -xadmin

xadmin后台管理

1.xadmin安装

  • pip install xadmin
  • 源码安装:将源码拷贝到项目中,并安装相应的模块包.

配置xadmin路由:

# urls.py

from django.urls import path

import xadmin

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
]

注册app

把下面两个app注册到settings.py的INSTALLED_APPS中

#setting.py

'xadmin',
'crispy_forms'

生成xadmin的表

python manage.py makemigrations

python manage.py migrate

设置成中文

#setting.py


LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False

 

models注册   在后台添加对model的管理 

  1. 在app下创建adminx
  2. 导入模块,创建xadmin管理器类
  3. 将管理器与model进行注册关联.
# users/adminx.py

import xadmin

from .models import EmailVerifyRecord

#xadmin中这里是继承object,不再是继承admin
class EmailVerifyRecordAdmin(object):
    # 显示的列
    list_display = ['code', 'email', 'send_type', 'send_time']
    # 搜索的字段,不要添加时间搜索
    search_fields = ['code', 'email', 'send_type']
    # 过滤
    list_filter = ['code', 'email', 'send_type', 'send_time']

xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin) #注册

 

xadmin后台管理全局配置

将全局配置修改:

  • 如左上角:django Xadmin。下面的我的公司
  • 主题修改,app名称汉化,菜单收叠。
  •  使用Xadmin的主题功能。

把全站的配置放在users\adminx.py中:

1. 添加主题功能

from xadmin import views



# 创建xadmin的最基本管理器配置,并与view绑定

class BaseSetting(object):

    # 开启主题功能

    enable_themes = True

    use_bootswatch = True



# 将基本配置管理与view绑定

xadmin.site.register(views.BaseAdminView,BaseSetting)

 

2.全局配置

 修改django admin 和下面的我的公司收起菜单

# 全局修改,固定写法
class GlobalSettings(object):

    # 修改title
    site_title = '后台管理界面'

    # 修改footer
    site_footer = '公司'

    # 收起菜单
    menu_style = 'accordion' #菜单风格:可折叠的


# 将title和footer信息进行注册
xadmin.site.register(views.CommAdminView,GlobalSettings)

修改之后,如图所示:

 

修改app的名字

 以users/apps.py为例

将user/apps.py代码替换为:

#users/apps.py


from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户'

还要在users/__init__.py中引用apps.py的配置

添加代码如下:

# users/__init__.py


default_app_config = 'users.apps.UsersConfig'

其它三个app类似.

xadmin进阶开发设置:

 

用户权限

  • 超级用户拥有所有权限,
  • 职员用户可以登入后台,但是权限需要被超级用户设置.
  • 其他用户不能登入后台

 

 组的权限

  • 添加一个组“编辑部门”,组是许多权限的集合,方便给相同职员添加权限
  • 组里面的成员不但拥有自己本身的权限外,还会拥有组的权限

 

默认排序、只读字段和不显示的字段

课程:

  • 按点击数倒序排序
  • 点击数不能编辑
  • 不显示收藏人数
#eg:

# Course的admin管理器

class CourseAdmin(object):

'''课程'''

    list_display = [ 'name','desc','detail','degree','learn_times','students']#显示的字段
    search_fields = ['name', 'desc', 'detail', 'degree', 'students'] #搜索
    list_filter = [ 'name','desc','detail','degree','learn_times','students'] #过滤
    model_icon = 'fa fa-book' #图标
    ordering = ['-click_nums'] #排序
    readonly_fields = ['click_nums'] #只读字段,不能编辑
    exclude = ['fav_nums'] #不显示字段

 

list_editable:在列表页可以直接编辑的

class CourseAdmin(object):

list_editable = ['degree','desc']

 

 

refresh定时刷新工具

 course/adminx.py中

class CourseAdmin(object):

refresh_times = [3,5] #自动刷新(里面是秒数)

后台效果:

可以选择3s或者5s自动刷新页面

 

增加富文本编辑器Ueditor

1.下载

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

解压后,把DjangoUeditor文件夹拷贝到项目目录下面

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

 

2.settings中INSTALLED_APPS插入app

INSTALLED_APPS = [
    'DjangoUeditor',
    ]

3.配置url

#mkw_learn/urls.py  
 

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

4.给model的detail字段设置UEditorField富文本编辑属性

#course/models.py



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.xadmin.py后台富文本编辑字段设置

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

8.模板中设置,django为了防止csrf攻击,对传过来的数据进行了转义,这里需要关闭转义.模板中关闭转义设置如下:

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

最终效果:后台编辑页面

 

前端显示

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值