xadmin 自定义模板

自定义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

xadmin 自定义模板的相关文章

RazorEngine在非MVC下的使用,以及使用自定义模板

---恢复内容开始--- RazorEngine模板引擎大大的帮助了我们简化字符串的拼接与方法的调用,开源之后,现在在简单的web程序,winform程序,甚至控制台程序都可以利用它来完成. 但如何在使用中调用方法和使用自定义模板呢?来看这样一个例子 1 string str="hello @Model.Name"; 2 string parse=Razor.Prase(str,new {Name="Tom"}); 3 Console.WriteLine(parse

WPF Step By Step 自定义模板

WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现的方案和最终的运行效果. 本文大纲 1.控件模板及数据模板 2.ListBox深度定制模板. 3.TreeView高级模板使用实例. 控件模板及数据模板 控件模板 什么是控件模板,指定可以在控件的多个实例之间共享 Control 的可视结构和性能方面的方面.控件模板其实就是我们在可视方面的自定义模板

Django 自定义模板标签和过滤器

1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次.例如: books/     __init__.py     models.py     templatetags/     views.py 在 templatetags 中创建两个空文件:一个 __init__.py (告诉Python这是一个包含了Python代码的包)和一个用来存放你自定义的

(转)ThinkPHP自定义模板标签详解

转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就是模板标签的强大之处.接触过dedecms或者phpcms等内容管理系统的人都知道,cms的前台都是使用模板标签来调用数据,如列表,内容.来看一个phpcms v9调用数据排行列表的标签: 1 {pc:content action="hits" catid="6" nu

sublime text插件emmet自定义模板

首先要找到 snippets.json这个文件,路径是preferences>browse packages,看看有没有emmet目录. 如果没有,可能是您没有安装emmet插件,或者您安装了但目录里没有这个文件夹,这时候您需要手动安装,下载地址 https://github.com/sergeche/emmet-sublime,再把下载的压缩包解压到 packages文件夹下,即可 如果有请打开 snippets.json这个文件,模板就是在这个文件里定义的,您可以自定义模板了.我加了一个vu

前端学PHP之自定义模板引擎

什么是网站模板?准确地说,是指网站页面模板,即每个页面仅是一个板式,包括结构.样式和页面布局,是创建网页内容的样板,也可以理解为已有的网页框架.可以将模板中原有的内容替换成从服务器端数据库中动态内容,目的是可以保持页面风格一致 PHP是一种HTML内嵌式的在服务器端执行的脚本语言,所以大部分PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程.虽然通过MVC设计模式可以把程序应用逻辑与网页呈现逻辑强制性分离,但也只是将应用程序的输入.处理和输出分开,网页呈现逻辑(视图)还会有HTML代

SublimeText插件Emmet的自定义模板

在前端界,作为快速生成代码的Emmet插件相当给力.最近在学bootstrap,需要频繁生成html头文件,我就想着自定义模板.国内只有基础教程,只好自己读英文文档了. Emmet国内基础教程地址: http://www.w3cplus.com/tools/emmet-cheat-sheet.html http://blog.wpjam.com/m/emmet/ 读了一些发现一个解决方案,原文是自定义emmet模板. 工具栏打开Preferences -> Package Settings ->

关于Xcode6 的自定义模板位置

自定义模板放置位置: Xode6 -> 打开App 后,?/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File 下

vim中如何引用自定义模板文件

我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig.sh. pythonconfig.py),内容可如图所示: 2. 在vim的.vimrc配置中加入对应该的模板文件引用,如下: autocmd BufNewFile *.sh 0r ~/.vim/template/shellconfig.sh autocmd BufNewFile *.py 0r