管理站点

备注

管理界面不是为了网站的访问者,而是为管理者准备的(django文档原话)。访问者的网站需要另外开发。

覆盖管理模板

使用第三方ui的前提:

非常熟悉和能看懂admin的前端代码,这意味着我需要掌握:

  • Javascript

  • Jquery

django-semantic-admin

掌握之后可以尝试使用 django-semantic-admin

css文件在 semantic_admintemplatesadminportal.html 从cdn引入,且无法修改

根模板admin/base.html的内置块和变量

{% block branding %}

页头的内容

  • site_header 默认值 Django管理

{% block breadcrumbs %}

面包屑

  • title 模型的名称

{% block title %}

TODO

内联表单集

inlines 属性,使用内联表单集可以跟父模型在同一页面同时编辑

Django提供的两个子类 TabularInline 或者 StackedInline 可以方便地动态增加或删除表单,值得研究模板源码并实现到godjan。

管理动作

关联源码和文件

  • change_list.html

  • admin_list.html

  • ModelAdmin.changelist_view

管理动作的默认动作:删除对象源码在哪里看?

通过debug发现:

django.contrib.admin.actions.delete_selected(modeladmin, request, queryset)

删除时会显示新页面,可以参考这个实现


常见问题

如何修改下拉框的值

修改模型的 __str__ 方法

字段可为null,表单保存时提示必填项

字段属性增加参数: brank=’’

ModelAdmin和site的区别

ModelAdmin是管理Model在页面的属性

而site也是管理页面属性,不过跟Model无关

修改标题

admin.site.site_header = "蝉时雨的个人网站"
admin.site.site_title = "蝉时雨的个人网站"