Django后台管理

目录

自带的admin

杀手级功能: 在新建项目时候已经自动生成!
1、创建超级用户:python manage.py createsuperuser
2、登录admin系统;
3、配置文件修改:

LANGUAGE_CODE = 'zh-hans'       // 修改后台界面语言为汉字
TIME_ZONE = 'Asia/Shanghai'     // 时区设置
USE_TZ = False                  // 

4、注册表: 进入app下的admin.py文件:

from .models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
    pass

admin.site.register(UserProfile, UserProfileAdmin)

5、刷新admin页面即可

XAdmin后台

继承自admin.
1、安装xadmin模块, 同时也会安装相关依赖包: pip install xadmin, 若安装出现错误,很正常!,见安装xadmin;
2、在setting.pyxadmincrispy_forms放进INSTALLED_APPS中;
3、同步xadmin自带的表: python manage.py migrate
4、修改url.py

import xadmin
urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
]
PIP安装XAdmin

可能出现错误

Downloading xadmin-0.6.1.tar.gz (1.0MB)
    100% |████████████████████████████████| 1.0MB 547kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\setup.py", line 11, in <module>
        long_description=open('README.rst').read(),
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\

解决办法
README.rst这个文件的编码有问题,可以内容没什么重要的,
1、直接到github上下载安装包,下载地址:https://github.com/sshwsfc/xadmin
2、然后新建一个txt空文件,把文件名改成README.rst,替换原来的文件下载安装包,下载zip压缩文件;
3、直接进入压缩包所在的目录安装: pip install xadmin-master.zip.
4、安装若出现错误,可能是缺少安装的依赖包:

# requirement.txt
django-crispy-forms>=1.6.0
django-import-export>=0.5.1
django-reversion>=2.0.0
django-formtools==2.0
future==0.15.2
httplib2==0.9.2
six==1.10.0
源码安装Xadmin

由于xadmin源码是最新版本的,还可以自定义功能,所以推荐源码安装

  1. github下载源码:https://github.com/sshwsfc/xadmin
  2. 解压,取出xadmin文件夹,放在项目根目录;
  3. 新建extra_apps文件夹, 将xadmin文件夹(注意是内部的xadmin文件夹)放进去;
  4. 同样配置文件设置: sys.path.insert(1, os.path.join(BASE_DIR, ‘extra_apps‘))

Xadmin中App的Model注册

类似admin的model注册;
1、每个app下新建adminx.py(注意文件名不能写错)文件,xadmin会默认查询此文件;
2、写入以下代码:

// 修改后刷新页面即可
import xadmin
from course.models import Course, Chapter, Video, CourseResouces

class CourseAdmin(object): // 继承object
    # 选择显示的字段
    list_display = ['name', 'mobile', 'course_name']

    # 添加字段搜索,筛选功能
    search_fields = ['name', 'mobile', 'course_name']  # 某些字段不能加,例如时间

    # 界面自带导出功能, 可以导出多种格式

    # 过滤器
    list_filter = ['name', 'mobile', 'course_name']

    # 按照students_num降序排列,同时也可以在标题栏点击降序
    ordering=['-students_num'] 

    # 自定制图标显示
    model_icon = 'fa fa-columns' 

    # 设置只读字段
    readonly_fields = ['name', 'degree', 'learn_times']

    # 设置不显示某些字段
    exclude = ['students_num']

    # 只要是涉及到此model的外键都会显示查询,不会出现下拉框,优点是当数据量过大时候,不会加载所有数据
    relfield_style = 'fk-ajax'

    # 设置在列表页页面可编辑的字段
    list_editable = ['degree','learn_times']

    # 页面定时刷新,可以在2和4s中选择,而且还可以取消刷新
    refresh_times = [2, 4]

xadmin.site.register(Course, CourseAdmin)

3、注意:user表会自动生成,无须注册!
4、若有多个app的话,添加字段需要仔细点!

xadmin用户信息表配置

# users/adminx.py
from django.contrib import admin

class UserProfileAdmin(admin.ModelAdmin):
    list_display = ['username', 'nick_name', 'gender', 'address']

admin.site.register(UserProfile, UserProfileAdmin)

Xadmin常用配置

先选择一个app下的adminx.py文件, 随后进行注册操作.

主题修改
from xadmin import views

class BaseSetting(object):
    enable_themes = True
    use_bootswatch = True

xadmin.site.register(views.BaseAdminView, BaseSetting)
全局页头和页脚配置
class GlobalSetting(object):
    site_title = '学习在线后台管理系统'
    site_footer = '学习在线'

    # 折叠左侧app菜单
    menu_style = "accordion" 

xadmin.site.register(views.CommAdminView, GlobalSetting)
修改左侧菜单App显示名称
// app的目录下的apps.py
class CourseConfig(AppConfig):
    name = 'appname'
    verbose_name = '要显示的名称'

// app的目录下的__init__.py
default_app_config = "appname.apps.CourseConfig"
自定制菜单图标

下载最新版本的font-awesome样式文件,官网地址:http://fontawesome.dashgame.com/
更新:将下载的css和fonts文件放进\mxonline\extra_apps\xadmin\static\xadmin\vendor\font-awesome\覆盖;

在官网查看对应图标的class值,若不能点击查看则Ctrl+alt+c查看;

在对应的adminx.py文件中设置图标:

class CourseAdmin(object):
    model_icon = 'fa fa-columns'  # 此处填写对应的class值即可

更新图标后若强制刷新无效则重启即可;

类函数字段显示
# models.py
class Course():
    def get_chap_num(self):
        return self.chapter_set.all().count()

    # 中文显示,若没有定义则只会显示get_chap_num
    get_chap_num.short_description='章节数'

    def my_link(self):
        from django.utils.safestring import mark_safe
        return mark_safe('<a href="https://www.baidu.com">链接</a>')

    my_link.short_description='章节数'

# adminx.py
class CourseAdmin():
    list_display=['get_chap_num','my_link']

最终结果展示

xadmin权限

修改权限失败:未找出原因!

集成django-ueditor插件步骤

1、安装:
源码下载:https://github.com/twz915/DjangoUeditor3,注意此版本兼容python3,优先采用此版本
在虚拟环境下安装zip文件:pip install DjangoUeditor-master.zip,或者将源码包放在extra_apps文件夹下;

2、settings中添加app:

INSTALLED_APPS = [
    'DjangoUeditor',
]

3、配置url:url(r‘^ueditor/‘,include(‘DjangoUeditor.urls‘ ))

4、修改model中需要使用ueditor的字段:

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

5、在xadmin\plugins文件下新建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\plugins\__init__.py文件中配置:

PLUGINS = (
   'ueditor',
)

7、course/adminx.py中配置:

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

8、前端页面渲染配置:

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

原文地址:https://www.cnblogs.com/fqh202/p/9256003.html

时间: 2024-10-06 12:23:12

Django后台管理的相关文章

Django后台管理界面

之前的几篇记录了模板视图.模型等页面展示的相关内容,这篇主要写一下后台admin管理界面的内容. 激活管理界面 Django管理站点完全是可选择的,之前我们是把这些功能给屏蔽掉了.记得上篇中Django模型模型安装小结中,我们把settings.py中的部分内容屏蔽了,并添加了一个app,如下 1 INSTALLED_APPS = ( 2 ## 'django.contrib.admin', 3 ## 'django.contrib.auth', 4 ## 'django.contrib.con

django后台管理-admin

0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register(导入的模型类) 注册方式二该方法是Django1.7的版本新增的功能: from django.contrib import admin from blog.models import Blog #Blog模型的管理器 @admin.register(Blog) class BlogAdmin(ad

django 后台管理

后台管理:1:本地化:语言和时区的本地化修改settings文件# LANGUAGE_CODE = 'en-us'LANGUAGE_CODE = 'zh-hans' #使用中文 # TIME_ZONE = 'UTC'TIME_ZONE = 'Asia/Shanghai' #中国时间 2:创建管理员 python manage.py createsuperuserusername:admin    [email protected](随便写)password:qwangzhihao 3:注册模型类

Django 后台管理xadmin

一. xadmin的使用 后台管理在开发中可以给我们提供很大的便利,django自带了一个后台管理admin,不过还有一个xadmin比django自带的好用一些,功能更加强大,为模型提供了版本控制,可以回滚数据.django中权限主要靠六表实现,首先是基础的user.group.permission三表,然后分别是user与group的多对多关系表.group与permission的多对多关系表,最后django特有的user与permission的多对多关系表.django基于用户user.

django后台管理布局

在model模块里设置 class pc_info(models.Model): ip = models.CharField(max_length=64) sn = models.CharField(max_length=64) addr = models.CharField(max_length=64) room_num = models.CharField(max_length=64) pc_type = models.CharField(max_length=64) brand = mod

Django Admin后台管理模块的使用

Admin后台管理模块的使用 Django的管理员模块是Django的标准库django.contrib的一部分.这个包还包括其它一些实用的模块: django.contrib.auth django.contrib.sessions django.contrib.comments 激活admin模块的方法是: 1. 在INSTALLED_APPS设置文件中,加入'django.contrib.admin' 2. 再添加 'django.contrib.auth', 'django.contri

第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理

第三百八十节,Django+Xadmin打造上线标准的在线教育平台-将所有app下的models数据库表注册到xadmin后台管理 将一个app下的models数据库表注册到xadmin后台管理 重点:xadmin的数据表注册,是到app下查找的adminx文件,所以我们必须在app下创建一个adminx.py文件,所有关于数据表注册到xadmin后台的代码都是写在adminx.py文件里 adminx.py文件编写 1.自定义一个类来继承object对象,这个类叫做数据表管理器 数据表管理器里

Django项目实践4 - Django网站管理(后台管理员)

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类站点, 管理界面 是基础设施中很重要的一部分. 这是以网页和有限的可信任管理者为基础的界面,它能够让你加入,编辑和删除站点内容. 常见的样例: 你能够用这个界面公布博客,后台的站点管理者用它来润色读者提交的内容,你的客户用你给他们建立的界面工具更新新闻并公布在站点上.这些都是使用管理界面的样例. 创

django admin后台管理数据复选框的使用

1.admin后台管理数据表,首先需要在admin.py中注册models # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.contrib import admin from .models import test_table from .models import person ''' class ngo_base_info_admin(admin.ModelAdmin): list_dis