Django的管理员模块是Django的标准库django.contrib的一部分。这个包还包括其它一些实用的模块:

django.contrib.auth
django.contrib.sessions
django.contrib.comments
激活admin模块的方法是:
1. 在INSTALLED_APPS设置文件中,加入'django.contrib.admin'
2. 再添加
'django.contrib.auth',
'django.contrib.contenttypes'
'django.contrib.sessions'
因为admin模块依赖
3. 在MIDDLEWARE_CLASSES属性中添加
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware'
'django.contrib.auth.middleware.AuthenticationMiddleware'.
也是因为依赖
4. 运行python manage.py syncdb,用于创建为admin等模块创建新的数据库表。
因为apps中有auth模块,会要求你创建一个超级用户。如果你取消这步,
也可以运行python manage.py createsuperuser。当且仅当,你安装了auth模块。
5. 在urls.py中设置admin映射
# Include these import statements...
from django.contrib import admin
admin.autodiscover()
# And include this URLpattern...
urlpatterns = patterns('',
# ...
(r'^admin/', include(admin.site.urls)),
# ...
)
6. 记住在你的模块中增添admin模板文件,可以复制django自带模板,注意在模块路径中添加
admin文件夹。
D:\Python27\Lib\site-packages\django\contrib\admin\templates\admin\base_site.html

7. 运行python manage.py runserver,网址中输入http://localhost:8000/admin/
8. admin界面默认是显示英语,如果要显示你需要的语言:
在MIDDLEWARE_CLASSES属性中添加'django.middleware.locale.LocaleMiddleware',并确保它
排列在SessionMiddleware后面。重新刷新admin页面
在admin页面中管理models模块:
1. 需要在你的app下创建一个admin.py文件,并对你的model类进行注册
from django.contrib import admin
from mysite.books.models import Publisher, Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

2. 当你在project文件夹中添加新的文件时,需要重启server才能生效。
3. 如果想要你的admin界面中的添加数据功能生效,需要在MIDDLEWARE_CLASSES属性中添加
'django.contrib.messages.middleware.MessageMiddleware',
自定义admin模块的显示
1. 取消在添加数据时,每一个字段都需要输入的限制
在model类中做相应的修改就可以了:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True)
只需要在字段声明中,设置blank=True,默认是False
 
关于NULL与空字符串的区别
在数据库操作中,NULL和空字符串""是两上不同的概念,有些数据库类型即能接受NULL值,又能接受
空字符串类型,例如,varchar类型,到底什么时候使用这两者,久而久之,容易造成数据的不一致,为
了避免这样的情况,Django默认是把blank=True这样的字段,统一做为空字符串插入到数据库中。同
时,在创建数据表的时候,所有字段统一默认使用NOT NULL。
但是,当遇到时间,日期类型的时候,空字符串反而会出错。这个时候,又需要使用NULL,只需要在model
字段声明中加入:
publication_date = models.DateField(blank=True, null=True)
一旦你加入null=True声明,这样就相当于改变了数据库表结构,类似SQL语句中的
alter table books_book modify publication_date date null;
然而之前说过,Django的python manage.py syncdb只能用表创建新表,不能更改表结构,所以这时你需要
在数据库中进行更新表结构操作。
 
在admin界面的编辑页面中,字段名字的显示是根据model类中的变量名来显示的,大写第一个字母,把下划线改
成空格显示出来。自定义显示可以使用verbose_name参数
email = models.EmailField(blank=True, verbose_name='e-mail')
使用ModelAdmin来管理model在admin页面中的显示
  • 自定义chanle list界面
ModelAdmin类似界面管理类,可以定义不同的显示细节。用法如下:
 
  
from django.contrib import admin
from mysite.books.models import Publisher, Author, Book

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'email')#把字段信息全部显示出来

search_fields = ('first_name', 'last_name') #添加search bar,在指定的字段中search
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)#页面右边会出现相应的过滤器选项
date_hierarchy = 'publication_date' #只接受日期类型的字段名
ordering = ('-publication_date',) #排序

admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin)
admin.site.register(Book, BookAdmin)

  • 自定义edit form界面
fields = ('title', 'publisher', 'authors', 'publication_date') #edit界面就按这个顺序显示
 
还可以定义可编辑的字段
fields = ('title', 'authors', 'publisher')
这样Django会自动给publication_data设置为null,记得null=True设置为null值
 
当遇到many-to-many的多选的字段类型时,Django自动提供上图中的选择方式,不过还可以
选择用其它方式来进行多选,这种方式更加直观,不过只能作用于many-to-many的多选字段,
不能应用于foreignkey字段。

filter_horizontal = ('authors',)

 
当然也有filter_vertical...
 
对于ForeighKey字段,也有相应的设置,用来输入字段的ID,点击边上的
放大镜图标,也会弹出选择框
raw_id_fields = ('publisher',)

关于用户,组,权限

Django提供了很详细的权限设置方案。包括对每一张表的控制权限。

转载于:https://www.cnblogs.com/muzinan110/p/5015616.html

django-admin相关推荐

  1. 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题

    [Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...

  2. django admin search_fields

    字段名以^开头,表示匹配开头 字段名以=开头,表示就精确匹配 字段名以@开头,表示全文检索 否则使用包含 如果字段名中包括__ ,则会对queryset取唯一值 技巧: django admin会分析 ...

  3. xadmin oracle 查询,Django admin 实现search_fields精确查询实例

    我就废话不多说了,还是直接看代码吧! search_fields = (u'gift_rule_id',u'user_id', u'activity_id',) //默认的查询集合 def get_q ...

  4. SimpleUI 2.0 发布,采用element-ui+vue给django admin带来全新体验

    百度智能云 云生态狂欢季 热门云产品1折起>>>   simpleui是由 Tompeppa 发起和维护的 Django 主题.该主题对Django的界面进行了大量的改进,让Djan ...

  5. grappelli美化Django Admin

    http://blog.csdn.net/huyoo/article/details/6965816 这几天在网上发现一个django app:grappelli,该app可以用来美化Django A ...

  6. Django admin修改app名称

    Django admin app 名称是我们通过startapp 创建的app的名称,如果你没有通过这种方式创建的话,你的app中应该是没有app.py文件的,需要你自己创建回来.修改名称由多种方式, ...

  7. 深度定制django admin界面

    定制django admin界面 1.修改admin界面中的名字 1.1 修改模型名字 在models.py的模型类中中添加一个Meta内部类,设置 verbose_name和verbose_name ...

  8. Django admin 页面添加自定义按钮 点击事件

    基于 simpleui 开发, Simple UI 一款基于vue+element-ui的django admin现代化主题 普通admin 好像实现不了, Simpleui 官网:https://s ...

  9. Django Admin 上传多张图片并显示缩略图

    Django Admin 上传多张图片并显示缩略图 文章目录 Django Admin 上传多张图片并显示缩略图 1.效果预览 2.自定义Widget 3.定义模型和模型表单 3.1 定义模型 3.2 ...

  10. Django admin后台管理页面的常用设置

    Django admin后台管理页面的常用设置 选择列表选项choices # filename: models.pyfrom django.db import models# 例1 int类型:ST ...

最新文章

  1. java转换ip地址格式转换_Java编程IP地址和数字相互转换代码示例
  2. python编程 语言-python编程语言有什么用途
  3. sai u 2016
  4. LightOJ - 1222 Gift Packing(最大费用最大流/KM)
  5. html搜索框美化代码单词,CSS 漂亮搜索框美化代码
  6. 外网数据同步到内网方案_数据同步之解决方案
  7. getComputedStyle方法的那些事
  8. TypeScript 4.0 发布
  9. Java这些多线程基础知识你会吗?
  10. 10分钟搭建完成人脸通行系统 百度『乘风』人脸智能化平台了解一下
  11. Ubuntu16安装GTK+2.0教程
  12. uv转化率多少正常_宣城UV光解设备价格多少-低价供应
  13. Lazy Load Plugin for jQuery延迟加载测试成功
  14. find命令之正则表达式
  15. mysql fk_MySQL FK的正确命名约定是什么?
  16. python基础分析_数据分析之Python基础
  17. 【网络--实验】华三防火墙命令行调试实例
  18. URLLC关键技术和网络适应性分析
  19. python 进程生命周期_计算客户生命周期价值的python解决方案
  20. 服装系统mysql设计_服装销售系统数据库设计.ppt

热门文章

  1. 1个报表工具,5大体系,60种可视化图表,靠这些打动领导就够了
  2. 数据统一管理--企业决策分析之刚需
  3. python matplotlib数据可视化教程_Python使用matplotlib实现数据可视化教程
  4. java log输出到文件路径_log4j中日志输出文件指定相对路径的方法
  5. python列表数据类型(一分钟读懂)
  6. 将字符串转为16进制数_Python 如何将字符串转为字典
  7. hun 暑期实训之打牌 cin与scanf的输入
  8. 格子染色问题 java_《Mathematical Olympiad——组合数学》——染色问题
  9. P3:线性分类、损失函数与梯度下降
  10. 软件工程导论 09章面向对象方法学