Django Admin和它的小伙伴们
胡阳@搜狐
date: 2013-07-29
blog: the5fire.com
Django的Admin有什么?
- 基于Model自动创建的基础的CRUD页面
- 批量操作:action、filter、search
- 方便的自定义: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/
深度定制
- 重写admin模板自定义context不好
- 合理的方式是模板继承,继承ModelAdmin
- 需要探索模板:
▾ 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的问题
- 文档甚少,需要看源码
- 代码的高耦合
So, 小伙伴来了
- admin2 – by pydanny
- xadmin – by sshwsfc(差沙)微云
好看的主题
都是基于Bootstrap
数据层的更改
- xadmin把ModelAdmin分离出View层(类似Django的view)
- djadmin2重用了Django的View
看Demo
优缺点-xadmin
- 优点
- 功能完善
- 插件机制
- 完全替代
- 缺点
- 文档不全
- 定制可能麻烦
优缺点-djadmin2
- 优点
- 可自定义主题
- restful接口
- 代码直接(不绕)
- 缺点
- 功能比较弱
- 目前未完全覆盖django的admin
参考
我自己用xadmin和djadmin2做了个demo: https://github.com/the5fire/django_admin_demo
转载请注明:爱开源 » DjangoAdmin和它的小伙伴
转载请注明:爱开源 » DjangoAdmin和它的小伙伴