Django内置之Admin
Admin
Admin是什么?其实就是Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件
简单来说,它是django内部提供后台管理,对数据库表实现增删改查。
- 连接数据源【sqlite,mysql】,手动填写
- admin实现增删改查
如何看待Admin?
假设开发一个新闻发布系统, 需要两部分,即主站和后台
- 第一期:开发主站,其中的内容和数据做简单的增删改查用Admin实现
- 第二期:后期自己开发后台。
django-admin是前后端不分离的,即内部系统
依赖的app
依赖APP:
django.contrib.auth
django.contrib.contenttypes
django.contrib.messages
django.contrib.sessions
模板的context_processors:
django.contrib.auth.context_processors.auth
django.contrib.messages.context_processors.messages
中间件:
django.contrib.auth.middleware.AuthenticationMiddleware
django.contrib.messages.middleware.MessageMiddleware
# 创建admin账户
python manage.py createsuperuser
1.配置的路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
2.定制Admin
在admin.py中只需要讲Mode中的某个类注册,即可在Admin中实现增删改查的功能,如:
admin.site.register(models.Depart)
admin.site.register(models.UserInfo)
但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:
方式一:
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd',)
admin.site.register(models.UserInfo, UserAdmin) # 第一个参数可以是列表
方式二:
@admin.register(models.UserInfo) # 第一个参数可以是列表
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'pwd',)
解释配置方式
admin.site.register(models.Depart) -> models.Depart + ModelAdmin
admin.site.register(models.Depart, DepartAdmin) -> models.Depart + DepartAdmin
ModelAdmin中提供了大量的可定制功能【相关配置】,如
1.list_display,列表时,定制显示的列。
class DepartAdmin(admin.ModelAdmin):
list_display = ('id','title',"mine")
# 自定义列名有两种方式
# 方式一:
@admin.display(description="自定义列")
def mine(self, obj):
return "内容"
# 方式二:
mine.short_description = "自定义列"
2.list_display_links,列表时,定制列可以点击跳转。
class DepartAdmin(admin.ModelAdmin):
list_display = ('id','title',"mine")
list_display_links =["id"]
3.list_editable,列表时,可以编辑的列
class DepartAdmin(admin.ModelAdmin):
list_display = ('id','title',"mine")
list_editable = ['title']
4.action,列表时,定制action中的操作
class DepartAdmin(admin.ModelAdmin):
list_display = ('id','title',"mine")
# 定制Action行为具体方法
def func(self, request, queryset):
print(self, request, queryset)
print(request.POST.getlist('_selected_action'))
func.short_description = "中文显示自定义Actions"
actions = [func, ]
5.search_fields,列表时,模糊搜索的功能
class UserInfoAdmin(admin.ModelAdmin):
list_display = ('id','username', 'pwd',"depart")
search_fields = ('username', 'depart')
6.form = ModelForm —> 针对编辑页面 根据需求看到相对应的表单
class UserInfoModelForm(forms.ModelForm):
class Meta:
model = models.UserInfo
fields = ["username","pwd"]
class UserInfoAdmin(admin.ModelAdmin):
list_display = ('id','username', 'pwd',"depart")
form = UserInfoModelForm
7.preserve_filters,详细页面,删除、修改,更新后跳转回列表后,是否保留原搜索条件
8.制HTML模板
add_form_template = None
change_form_template = None
change_list_template = None
delete_confirmation_template = None
delete_selected_confirmation_template = None
object_history_template = None