Django Admin管理入门
Django最强大的部分之一是自动管理界面。它从模型中读取元数据,以提供快速,以模型为中心的界面,受信任的用户可以在其中管理您网站上的内容。管理员的推荐用途仅限于组织的内部管理工具。它不是用于构建整个前端。
管理员有许多用于自定义的钩子,但要注意尝试专门使用这些钩子。如果您需要提供一个更加以流程为中心的接口来抽象出数据库表和字段的实现细节,那么可能是时候编写自己的视图了。
1 创建Django项目
django-admin startproject crm_v1
2 创建并注册app
python manage.py startapp bms
修改settings.py
INSTALLED_APPS = [
'django.contrib.admin',
......
'bms.apps.BmsConfig',
]
3 创建模型 modles.py
在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。
设计哲学
模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。Django 遵循 DRY Principle 。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,它们会自动从模型生成。
来介绍一下迁移 - 举个例子,不像 Ruby On Rails,Django 的迁移代码是由你的模型文件自动生成的,它本质上只是个历史记录,Django 可以用它来进行数据库的滚动更新,通过这种方式使其能够和当前的模型匹配。
from django.db import models class Publish(models.Model):
name = models.CharField(max_length=32)
city = models.CharField(max_length=32)
email = models.EmailField()
def __str__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=16)
age = models.IntegerField()
def __str__(self):
return self.name class Book(models.Model):
title = models.CharField(max_length=32)
publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE)
pub_date = models.DateField()
price = models.DecimalField(max_digits=6, decimal_places=2)
author = models.ManyToManyField(to="Author")
state = models.IntegerField(choices=[(1, "已出版"), (2, "未出版")], default=1)
def __str__(self):
return self.title
4 数据库操作
为模型的改变生成迁移文件
python manage.py makemigrations
应用用数据库迁移
python manage.py migrate
数据库迁移被分解成生成和应用两个命令是为了让你能够在代码控制系统上提交迁移数据并使其能在多个应用里使用;这不仅仅会让开发更加简单,也给别的开发者和生产环境中的使用带来方便。
5 激活管理工具
通常我们在生成项目时会在 urls.py 中自动设置好,
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),]
6 创建超级用户
python manage.py createsuperuser

7 使用管理工具
启动Django项目
输入url:http://127.0.0.1:8000/admin
即可看到登录页面,输入刚才创建的用户名和密码进行登录

登录成功后可以看到如下页面

admin的定制
1 注册类
在admin.py中只需要将Mode中的某个类注册,即可在Admin中实现增删改查的功能
from django.contrib import admin
from django.contrib import adminfrom bms.models import Book,Publish,Author,AuthorDetail
admin.site.register(Book)
admin.site.register(Publish)
admin.site.register(Author)
以上是注册Book,Publilsh, Author类,在admin中即可看到

2 添加数据
通过点击add分别给author,book ,publish 添加数据


再创建书籍是可以看到一件有了出版社和作者的选择

3 查看book表数据

可以看到只要书籍名称,没有作者、价格、出版社等信息
4 定制列,显示更多的字段信息
需要利用ModelAdmin进行操作
class BookInfo(admin.ModelAdmin):
list_display = ['title', 'price', 'publish']
# list_displey 中的字段必须是和数据库中有的
admin.site.register(Book, BookInfo)
可以看到已经多了两列信息

5 显示多对多字段----author(作者姓名)
class BookInfo(admin.ModelAdmin):
def show_author(self, obj):
return " | ".join([author.name for author in obj.author.all()])
list_display = ['title', "show_author", 'price', 'publish', 'state']
admin.site.register(Book, BookInfo)

6 list_filter,列表时,定制右侧快速筛选。
class BookInfo(admin.ModelAdmin):
def show_author(self, obj):
return " | ".join([author.name for author in obj.author.all()])
list_display = ['title', "show_author", 'price', 'publish', 'state']
list_filter = ['publish', 'author'] # 列表中写筛选的字段
admin.site.register(Book, BookInfo)

7 search_fields 列表,模糊搜索的功能
class BookInfo(admin.ModelAdmin):
def show_author(self, obj):
return " | ".join([author.name for author in obj.author.all()])
list_display = ['title', "show_author", 'price', 'publish', 'state']
list_filter = ['publish', 'author']
search_fields = ['author__name', 'price', 'title', 'publish__name']
# 由于 author是多对的字段,publish是外键,故不能直接写字段名,必须跨表查看
admin.site.register(Book, BookInfo)

8 自定义active
class BookInfo(admin.ModelAdmin):
def show_author(self, obj):
return " | ".join([author.name for author in obj.author.all()])
list_display = ['title', "show_author", 'price', 'publish', 'state']
list_filter = ['publish', 'author']
search_fields = ['author__name', 'price', 'title', 'publish__name']
def func(self, request, queryset):
print(self, request, queryset)
print(request.POST.getlist("_selected_action"))
def price_to_zero(self, request, queryset):
queryset.update(price=0) # 把选择的价格都设置为0
func.short_description = "自定义action动作"
price_to_zero.short_description = "价格初始化"
# 设置在action下拉菜单中显示的信息
actions = [func, price_to_zero] # 把自定义的两个方法添加到actions中
# Action选项都是在页面上方显示
actions_on_top = True
# Action选项都是在页面下方显示
actions_on_bottom = False
admin.site.register(Book, BookInfo)
(1)选择刚才定义的action动作

可以看到后台的输出

(2)执行价格初始化动作

结果如下,可以看到价格已经设置为0

9 ordering 列表时,数据排序规则
设置根据id,价格排序,也可反向排序 return ['-title', 'price']
class BookInfo(admin.ModelAdmin):
......
def get_ordering(self, request):
return ['title', 'price']
点击title列或者price列即可进行排序

10 设置admin后台为中文显示
修改settings.py文件
将LANGUAGE_CODE = 'en-us'改为
LANGUAGE_CODE = 'zh-hans'

也可设置表的字段为中文,加上 verbose_name选项即可。
class Book(models.Model):
title = models.CharField(max_length=32,verbose_name="书名")
publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE,verbose_name="出版社")
pub_date = models.DateField(verbose_name="出版日期")
price = models.DecimalField(max_digits=6, decimal_places=2,verbose_name="价格")
author = models.ManyToManyField(to="Author",verbose_name="作者")
state = models.IntegerField(choices=[(1, "已出版"), (2, "未出版")], default=1,verbose_name="状态") def __str__(self):
return self.title
效果如下:

SHOW AUTHOR还是英语的,现在来改一下
class BookInfo(admin.ModelAdmin):
def show_author(self, obj):
return " | ".join([author.name for author in obj.author.all()])
show_author.short_description = "作者"
short_description 设置字段的描述信息
最终结果如图

其他设置可参考 : https://www.cnblogs.com/yuanchenqi/articles/8323452.html
Django Admin管理入门的更多相关文章
- Django admin 管理工具
admin 组件的使用 Django 提供了基于 web 的管理工具.Django 自动管理工具是 django.contrib 的一部分. INSTALLED_APPS = [ 'django.co ...
- Django admin管理
admin的配置 admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理.默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功 ...
- Django——admin管理工具
一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...
- 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具
Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...
- 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题
配置Django Admin,关于如何启用请参考Django官方文档<Activate the admin site>.但是我在配置过程中登录http://example.com/admi ...
- django admin管理后台中文添加问题
django版本号 1.7.8 #create database mydb character set utf8;#django-admin.py startproject mysite#设置sett ...
- 10.5Djang admin 管理工具
2018-10-5 17:30:57 Django admin 管理工具 参考连接: https://www.cnblogs.com/yuanchenqi/articles/8323452.html ...
- 01: 重写Django admin
目录: 1.1 重写Django admin项目各文件作用# 1.2 重写Django admin用户认证 1.3 将要显示的表注册到我们自己的kind_admin.py中 1.4 项目首页:显示注册 ...
- 你应该使用 Django admin 的 9 个理由(转)
你应该使用 Django admin 的 9 个理由 “问题是,我问到的每个人都持反对意见,他们认为 admin 只限于超级用户,很不灵活并且是难以定制.”—来自 Reddit 的 andybak 我 ...
随机推荐
- 构建具有用户身份认证的 Ionic 应用
序言:本文主要介绍了使用 Ionic 和 Cordova 开发混合应用时如何添加用户身份认证.教程简易,对于 Ionic 入门学习有一定帮助.因为文章是去年发表,所以教程内关于 Okta 的一些使用步 ...
- webpack4 splitChunksPlugin && runtimeChunkPlugin 配置杂记
webpack2 还没研究好,就发现升级到4了,你咋这么快~ 最近要做项目脚手架,项目构建准备重新做,因为之前写的太烂了...然后发现webpack大版本已经升到4了(又去看了一眼,4.5了),这么快 ...
- Http协议、Tomcat、servlet
HTTP协议 Http,超文本传输协议是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准. Http协议由http请求和http响应组成 http请求: 1.请求行 请求方式 POST ...
- 由清除float原理到BFC
关于浮动 设置为浮动的元素会脱离当前文档流,向左或向右移动直到边缘遇到另一个浮动元素或者到达边界.普通元素不会对齐造成影响. 浮动是把双刃剑,在给我们的布局带来便利的同时有一些缺点需要我们去解决.例如 ...
- iscsi 挂载网络存储及存储访问
http://blog.sina.com.cn/s/blog_408764940101ghzi.html 一.Ess3016x设置 登陆admin 密码 888888888888 1.安装硬盘,查看硬 ...
- 一个完整的html 每个标签的含义
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- cmd登录系统用户
1. sqlplus /nolog 2. conn system/密码 as sysdba 或conn / as sysdba 或conn sys/密码 as sysdba 注:system系 ...
- 使用libpcap获取http报文
在上一篇博客中简单对libpcap库基本函数及基本工作流程做了些简单说明, 今天我们先了解一下pcap_loop()及pcap_dispatch()函数的功能及作用: (1)pcap_loop()循环 ...
- eclipse工具按键翻译
1.新建项目界面 2.新建类界面 3.类中右击
- UISegmentedControl在Swift中的使用
UISegmentedControl控件是分段显示控件,用户可以选择它上展示的任一段部分,每一个部分都像是一个按钮,如果被按下也会像UIButton一样执行相应的方法.在这篇文章中我们将创建一个UIS ...