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 我 ...
随机推荐
- Python(Django)项目与Apache的管理
(开开心心每一天~ ---虫瘾师) Python(Django)项目交给Apache的管理(一) 准备:Django的环境(Python).Apache.Wsgi(必须文件) 首先需要电脑有Pytho ...
- .NET开发微信小程序-上传图片到服务器
1.上传图片分为几种: a:上传图片到本地(永久保存) b:上传图片到本地(临时保存) c:上传图片到服务器 a和b在小程序的api文档里面有.直接说C:上传图片到服务器 前端代码: /* 上传图片到 ...
- sqlilabs 5
第一个1不断返回true,2可以进行更改?id=-1' union select 1,2,3 and '1?id=-1' union select 1,2,3 and 1='1 ?id=-1' uni ...
- Jms的MessageListener中的Jms事务
摘要 一般来说,如果为JmsTemplate做了事务配置,那么它将会与当前线程的数据库事务挂钩,并且仅在数据库事务的afterCommit动作中提交. 但是,如果一个MessageListener在接 ...
- activemq+Zookeper高可用集群方案配置
在高并发.对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案.从ActiveMQ 5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式 ...
- linux几种定时函数的使用
Linux定时函数介绍: 在程序开发过程中,我们时不时要用到一些定时器,通常如果时间精度要求不高,可以使用sleep,uslepp函数让进程睡眠一段时间来实现定时, 前者单位为秒(s),后者为微妙(u ...
- Clloection接口 与List接口
collection接口: collection是单列集合接口的根接口,该接口中又包含了多个集合接口,collection接口提供了很多操作集合的方法,比如添加元素的方法,删除元素的方法,修改元素的方 ...
- 解决Android模拟器卡慢的问题
解决Android模拟器卡慢的问题 本文介绍使用Intel HAXM技术为Android模拟器加速,使模拟器运行速度媲美真机. Intel HAXM(Hardware Accelerate Execu ...
- Android 源码解析 之 setContentView
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41894125,本文出自:[张鸿洋的博客] 大家在平时的开发中,对于setCont ...
- rest_framework之解析器、路由控制、分页
解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_fr ...