自定义xadmin模板添加到后台页面
将下载的xadmin放在我们的项目根目录下面
在每个app里面添加一个adminx.py 文件
在xadmin文件里面进行操作
给你需要的表添加显示在后台里面,编写实例化类
list_display = [‘‘,‘‘,‘‘]
seacher_fields = []
list_fieldter = []
ordering = []
exclude = []
readonly_fields = []
inlines = []
list_editable =[] #针对字段里面出现choices选择
refresh_times = [5,2] #自动刷新后台管理页面
后台外键设置关联添加 (只能嵌套一层)(一个外键对应多个表,可以给多个表设置)
class LessonInline(object):
model = Lesson
extry = 0
class Course(object):
inlines = [LessonInline,]
两个管理器,管理同一个表
在models.py文件里面
class BannerCourse(object):
class Meta: verbose_name_plural = verbose_name = u‘课程‘ proxy = True #在数据库里面不会生成新的数据表 在asminx.py 文件里面copy管理同一个表的class ,然后在后面添加以下代码: def queryset(self): qs = super(该类名, self).queryset() qs = qs.filter(需要管理的字段 = True) return qs
在管理同一个表的class ,然后在后面添加以下代码: def queryset(self): qs = super(该类名, self).queryset() qs = qs.filter(需要管理的字段 = False) return qs 在models.py文件中
可以将自定义函数直接添加到显示里面,修改其名字:该函数名.short_description = ‘名字‘
可以将自定义函数添加页面,添加html代码,实现页面跳转def go_to(self): from django.utils.safestring import mark_safe return mark_safe("<a href=‘http://www.baidu.com‘>跳转</a>") 该函数名.short_description = ‘名字‘最后将函数名添加到adminx.py中
后台页面自动修改数据 在adminx.py文件中, ‘‘‘实例‘‘‘‘‘‘保存课程机构的时候统计课程机构偶的课程数‘‘‘def save_models(self): obj = self.new_obj obj.save() if obj.course_org is not none: course_org = obj.course_org course_org.course_nums = Courses.objects.filter(course_org=course_org).count() course_org.save() xadmin 插件开发互文本编辑器,UEditor 在github上面搜索djangoueditor,经行安装下载 插件官方文档 网址:http://xadmin.readthedocs.io/en/docs-chinese/plugins.html#安装流程:1. pip install DjangoUeditor2.settings.py 中加入DjangoUeditor
3.在adminx.py文件里面,courseAdmin类里面加入
def save_models(self): obj = self.new_obj obj.save() if obj.course_org is not None: course_org = obj.course_org course_org.course_nums = Courses.objects.filter(course_org=course_org).count() course_org.save()
4.在models里面填入from DjangoUeditor.models import UEdiitorField 修改该类中的字段内容
detail = UEditorField(verbose_name=u‘课程详情‘,width=600, height=300, imagePath="courser/ueditor/", filePath="courser/ueditor/", default=‘‘)
3.url(r‘ueditor/‘,include(‘DjangoUeditor.urls‘))在经行这一步时,会报错,需要修改源码修改DjangoUeditor\urls.py文件中的,
第4行 将from django.conf.urls import patterns, url 改为 from django.conf.urls import url, include
第10行 将 urlpatterns = patterns(‘‘,
url(r‘^controller/$‘,get_ueditor_controller))
改为:
urlpatterns = [ url(r‘^controller/$‘,get_ueditor_controller),]
在需要修改的app里面的models里面的需要添加ueditor的字段修改为以下字段4.detai = UEditorField() 5.在\extra_apps\xadmin\plugins下,添加一个文件 ueditor.py在文件里面填写
# coding=utf-8import xadminfrom django.db.models import TextFieldfrom xadmin.views import BaseAdminPlugin,CreateAdminView,ModelFormAdminView,UpdateAdminViewfrom DjangoUeditor.models import UEditorFieldfrom DjangoUeditor.widgets import UEditorWidgetfrom 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(selfself,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.在adminx.py 中,在该类下面添加
style_fields = {"detail":"ueditor"}
7.在\extra_apps\xadmin\plugins下的__init__.py文件中,将‘ueditor‘其添加在后面
8.在前端页面里面 {% autoescape off %} {% endautoescape %}
时间: 2024-10-18 14:25:30