Admin站点是django提供的一个后台管理页面,可以用来对用户与数据库表数据进行管理。

Admin站点配置流程

  • 1.在settings.py文件中INSTALL_APPS列表中添加django.contrib.admin,django默认添加
  • 2 . 创建管理员用户,在terminal窗口创建管理员用户,python manage.py createsuperuser,创建成功后可以用账户访问127.0.0.1:8000/admin管理页

- **3.在admin.py文件中注册模型**
(1). 从应用中的models.py文件中导入模型类,```from app.models import Students,Grades```
(2.) 注册模型,两种方法,推荐用第二种。
```
# 方法一
admin.site.register(Grades)
admin.site.register(Students)
# 方法二,装饰器
@@admin.register(Students)
@@admin.register(Grades)

(3). 定义模型在页面显示的列表页属性和修改页属性。

- **列表页属性**
(1). list_display 用于显示字段

list_display = ['pk','s_name','s_age','s_gender,'contend','s_grade','isDelete]

**注意**: 如果直接写数据模型种的字段名,那么在显示字段的标题也为字段名,如果要将标题改为中文,则需要如下定义

def name(self):

return self.s_name

name.short_description = '姓名' # 设置name函数的描述为姓名

list_display = [name] # 元素直接写函数的名字

<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028120445616-1859053195.png" title="效果"></div>

(2). list_filter 过滤器 :用于设置页面显示的数据以什么分组

list_filter = ['s_grade"] # 设置以班级作为显示的分组

<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028120829154-415189991.png" title="效果"></div>
(3) . search_fields 用于页面关键字搜索

search_fields = ['s_name'] # 以名字搜索

<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028121013076-492905196.png" title="效果"></div>
(4). list_per_page 用于分页

list_per_page = 3 # 设置一页显示3条数据

<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028121133446-1844621034.png" title="效果"></div>
- **修改页属性** (1).fields 用于决定页面显示字段的先后顺序

fields = ['g_name', 'boy_num', 'girl_num', 'create_date', 'isDelete'] # 更新和添加修改页的字段显示会以列表中元素的顺序

(2). fieldsets 用于给页面显示的字段进行分组

fieldsets = [('基本信息',{'fields':['s_name','s_age','s_gender','s_grade']}), # 将这些字段分组显示,组名为基本信息

('拓展信息',{'fields':['contend','isDelete']})]

<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028122035579-784161683.png" title="效果"></div>
> 注意:fields与fieldsets不能同时使用 - **执行动作的位置**
actions_on_bottom = True
actions_on_top = False
<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028122226434-1346420037.png" title="效果"></div>
---
- **自定义管理界面**
实现关联,在创建班级的时候添加两个学生

定义关联,在创建班级的时候添加2个学生

class StudentsAdd(admin.TabularInline):

model = Students

extra = 2

在班级模型添加关联

inlines = [StudentsAdd]
<div align="center"><img src="https://img2018.cnblogs.com/blog/1514724/201810/1514724-20181028122417499-1714150045.png" title="效果"></div>

---

#### 全部实现代码

from django.contrib import admin

from user.models import Grades,Students # 从模块引入模型

定义关联,在创建班级的时候添加2个学生

class StudentsAdd(admin.TabularInline):

model = Students

extra = 2 # 设置为2

class GradesAdmin(admin.ModelAdmin):

# 列表页属性

def name(self):

return self.g_name

def girl_num(self):
return self.girl_num def boy_num(self):
return self.boy_num def time(self):
return self.create_date def delete(self):
return self.isDelete name.short_description = '班级名'
girl_num.short_description = '女生人数'
boy_num.short_description = '男生人数'
time.short_description = '创建时间'
delete.short_description = '是否删除'
inlines = [StudentsAdd]
list_display = ['pk',name,girl_num,boy_num,time,delete] # 用于显示标题为中文
list_filter = ['g_name']
search_fields = ['g_name']
list_per_page = 2
# # 添加修改页属性
# fields = ['g_name', 'boy_num', 'girl_num', 'create_date', 'isDelete']
fieldsets = [('num', {'fields': ['boy_num', 'girl_num']}),
('base', {'fields': ['g_name', 'create_date', 'isDelete']})]

admin.site.register(Grades,GradesAdmin)

装饰器实现注册

@admin.register(Students)

class StudentsAdmin(admin.ModelAdmin):

def gender(self):

if self.s_gender:

return '男'

else:

return '女'

def name(self):
return self.s_name def age(self):
return self.s_age def content(self):
return self.contend def grade(self):
return self.s_grade def delete(self):
return self.isDelete gender.short_description = '性别'
name.short_description = '姓名'
age.short_description = '年龄'
content.short_description = '描述'
grade.short_description = '班级'
delete.short_description = '是否删除' list_display = ['pk',name,age,gender,content,grade,delete]
list_filter = ['s_grade']
search_fields = ['s_name']
list_per_page = 3
fieldsets = [('基本信息',{'fields':['s_name','s_age','s_gender','s_grade']}),
('拓展信息',{'fields':['contend','isDelete']})] # 执行动作的位置
actions_on_bottom = True
actions_on_top = False

admin.site.register(Students,StudentsAdmin)

Django 中Admin站点的配置的更多相关文章

  1. Django 中 admin 的执行流程

    Django 中 admin 的执行流程 1 循环加载执行所有已经注册的 app 中的 admin.py 文件 def autodiscover(): autodiscover_modules('ad ...

  2. django中的站点管理

    所谓网页开发是有趣的,管理界面是千篇一律的.所以就有了django自动管理界面来减少重复劳动. 一.激活管理界面 1.django.contrib包 django自带了很多优秀的附加组件,它们都存在于 ...

  3. django中admin的使用

    转载网址:https://www.cnblogs.com/wumingxiaoyao/p/6928297.html     Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理 ...

  4. django使用admin站点上传图片

      Django有提供文件系统支持,在Admin站点中可以轻松上传图片.使用Admin站点保存图片,需要安装Python的图片操作包 pip install Pillow 1 配置 默认情况下,Dja ...

  5. Django的Admin站点管理

    一.概述 内容发布:负责添加.修改.删除内容 公告访问 二.配置Admin应用 在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin',默认是添 ...

  6. 测试开发之Django——No4.Django中前端框架的配置与添加

    我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...

  7. django之admin站点

    Admin站点 通过使用startproject创建的项目模版中,默认Admin被启用 1.创建管理员的用户名和密码 python manage.py createsuperuser 然后按提示填写用 ...

  8. django中的setting最佳配置小结

    Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...

  9. django中admin一些方法

    1.概述:内容发布,负责添加,修改,删除内容及公告访问2.配置admin应用在settings文件中INSTALLED_APPS添加:'django.contrib.admin', 默认是已经添加好的 ...

随机推荐

  1. 【slighttpd】基于lighttpd架构的Server项目实战(6)—预备知识之Http

    接下来,我们開始http部分的开发. 在此之前.有必要先学习一下HTTP协议- http1.1 的rfc文档:http://www.ietf.org/rfc/rfc2616.txt 简单介绍 超文本传 ...

  2. [Javascript] Deep Search nested tag element in DOM tree

    // For example you want to search for nested ul and ol in a DOM tree branch // Give example <ol&g ...

  3. Android 源代码解析 之 setContentView

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41894125,本文出自:[张鸿洋的博客] 大家在平时的开发中.对于setCont ...

  4. SVNserver搭建和使用(二)

    上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下怎样使用VisualSVN Server建立版本号库,以及TortoiseSVN的使用. 首先打开V ...

  5. Object类方法简介二

    在学了Object类前面的三个常用方法后,又遇到它的另外三个方法——clone().finalize().getClass(),这三个方法不经常使用,但因为在学习过程遇到了,就简单的对它们的使用做一个 ...

  6. 关于ShapeDrawable应用的一些介绍(中)之Gradient

    版权声明:本文为博主原创文章,未经博主允许不得转载. Gradient,渐变,是在界面设计中最经常用到的一种技巧,只要涉及到颜色的处理,浓妆淡抹总相宜,说的就是它. 在Android中,当然也提供了这 ...

  7. Linux - 环境变量与位置变量

    环境变量 [root@local ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 注:只有自己执行 ...

  8. html转义字符换行以及回车等的使用

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 html换行回车转义字符 换行Line feed   回车Carriage Return  html中换行转义字符 的使 ...

  9. POJ3087 Shuffle'm Up

    题目: 现有字符串s1.s2.s12,其中s1.s2的长度为len,s12的长度为2*len. 是否可以通过一些操作使s1和s2转换合并成s12? 变换的操作规则如下: 假设s1=11111,s2=0 ...

  10. oracle连接数不够解决

    ora-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程 看到如上错误出现,就要查看是否是是数据库连接数被占满了 具体的查询sql如下: select count(*) from v ...