Django后台管理

匿名 (未验证) 提交于 2019-12-03 00:39:02

Ŀ¼

杀手级功能: 在新建项目时候已经自动生成!
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页面即可

继承自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), ]

可能出现错误

解决办法
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源码是最新版本的,还可以自定义功能,所以推荐源码安装

  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‘))

类似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的话,添加字段需要仔细点!

# users/adminx.py from django.contrib import admin  class UserProfileAdmin(admin.ModelAdmin):     list_display = ['username', 'nick_name', 'gender', 'address']   admin.site.register(UserProfile, UserProfileAdmin)

先选择一个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的目录下的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']

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

1、安装:
源码下载:。
在虚拟环境下安装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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!