专栏首页Python程序员杂谈DjangoAdmin和它的小伙伴

DjangoAdmin和它的小伙伴

Django Admin和它的小伙伴们

胡阳@搜狐

date: 2013-07-29

blog: the5fire.com

Django的Admin有什么?

  1. 基于Model自动创建的基础的CRUD页面
  2. 批量操作:action、filter、search
  3. 方便的自定义:ModelAdmin、ModelForm

数据层定制

重载ModelAdmin,设定属性:

class BookAdmin(admin.ModelAdmin):
    search_fields = ('name', 'alias')
    fields = ('name', 'alias', 'desc', 'category', 'tags', 'status',)
    list_display = ('preview', 'name', 'alias', 'category', 'create_time')

    form = BookForm
    list_per_page = 15

    def preview(self, obj):
        return '<a href="#">%s</a>' % obj
    preview.short_description = u'预览'
    preview.allow_tags = True

以及重写逻辑:

@csrf_protect_m
def changelist_view(self, request, extra_context=None):
    # blablabla

页面逻辑定制

自定义Form:

class BookForm(forms.ModelForm):
    name = forms.CharField(max_length='20', label=u'modif by form')

    def clean_name(self):
        raise ValidationError(u'哈哈,错了吧')

    class Meta:
        model = Book

look http://localhost:8000/admin/book/book/54/

深度定制

  1. 重写admin模板自定义context不好
  2. 合理的方式是模板继承,继承ModelAdmin
  3. 需要探索模板: ▾ admin/ ▸ bin/ ▸ locale/ ▸ static/ ▾ templates/ ▸ admin/ ▸ registration/ ▸ templatetags/ ▸ views/ __init__.py [RO] actions.py [RO] filters.py [RO] forms.py [RO] helpers.py [RO] models.py [RO] options.py [RO] sites.py [RO] tests.py [RO] util.py [RO] validation.py [RO] widgets.py [RO]

自带Admin的问题

  1. 文档甚少,需要看源码
  2. 代码的高耦合

So, 小伙伴来了

  1. admin2 - by pydanny
  2. xadmin - by sshwsfc(差沙)微云

好看的主题

都是基于Bootstrap

数据层的更改

  • xadmin把ModelAdmin分离出View层(类似Django的view)
  • djadmin2重用了Django的View

看Demo

http://localhost:8000

优缺点-xadmin

  • 优点
    1. 功能完善
    2. 插件机制
    3. 完全替代
  • 缺点
    1. 文档不全
    2. 定制可能麻烦

优缺点-djadmin2

  • 优点
    1. 可自定义主题
    2. restful接口
    3. 代码直接(不绕)
  • 缺点
    1. 功能比较弱
    2. 目前未完全覆盖django的admin

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • XML,XSL,DTD,SCHEMA

    XML:(extend mark language)可扩展标记语言,主要是用来进行数据交换的。是一种简单的数据存储语言。它和HTML的区别就是XML重视数据本身...

    the5fire
  • JQuery通过JSON和Servlet进行交互

    今天接着看Hibernate的视频,中间休息的时候随手点了几个网页,看到JSON这个东西,心里琢磨这个东西以前见过,没用过,这是个啥玩意。

    the5fire
  • Struts2之Validation的简单使用实例

    本来不打算写这些细枝末节的东西了,因为在文档中都有现成的实例,写了也只能自己用来参考,不过这个Validation文档中给的不全,从网上查之后才知道用法。 首先...

    the5fire
  • Django配置流程

    数据库设置 ENGINE: 指定所使用的是个什么样的数据库 NAME:指明 数据库的名称 USER:指示 数据库的用户名 PASSWOR...

    lesM10
  • 使用PyInstaller把Python

    2、解压即用(V2.1)。注意环境变量,或者用pyinstaller.py的全路径,或者到解压目录下使用。*^_^*

    py3study
  • python: import详解

    在python用import或者from...import或者from...import...as...来导入相应的模块,作用和使用方法与C语言的include...

    昱良
  • 使用 pyinstaller 打包 python 程序

    首先需要明确说明的是,版本问题,python2python2python2 与 python3python3python3 都有自己对应的 pyinstalle...

    f_zyj
  • php系列二之phpstorm Xdebug和laravel常见问题整理

    因为 php artisan migrate:make 是 Laravel 4 的语法,而 Laravel5 已经换成了 php artisan make:mi...

    开发架构二三事
  • 11个Docker的奇思妙用

    Docker虽然不能解决全球饥饿问题,但是最近很多Docker的新奇用法就足以让人大开眼界了。从树莓派集群的管理到基因序列和癌症的研究,以下11个关于Docke...

    BestSDK
  • Super快报第29期:起个大早的小秘书

    1、新浪微博要养多少小秘书? 研究人员观察到,新浪微博三成的删贴活动发生在发帖后5到10分钟内,九成的删贴发生在24小时内。假设新浪微博的一个审查员平均每分钟能...

    罗超频道

扫码关注云+社区

领取腾讯云代金券