Admin后台管理模块的使用

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提供了很详细的权限设置方案。包括对每一张表的控制权限。
 

Django Admin后台管理模块的使用的更多相关文章

  1. Django admin 后台管理

    在App 文件夹下的 admin.py 文件中写入 from django.contrib import admin from app名 import models admin.site.site_h ...

  2. Linux下开发python django程序(设置admin后台管理模块)

    1.新建项目和项目下APP django-admin startproject csvt03 django-admin startapp app1 2.修改settings.py文件 设置默认安装AP ...

  3. Django Admin后台管理功能使用+二次开发

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  4. Python菜鸟之路:Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin ...

  5. django admin后台管理功能的学习

    1.简要说明 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import a ...

  6. Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: 1 2 3 4 5 from django.contrib im ...

  7. Django Admin后台管理用户密码修改

    方法一 在Terminal中执行:python manage.py changepassword your_name(其中“your_name”为你要修改密码的用户名),根据提示内容修改即可. 方法二 ...

  8. 1210 BBS admin后台管理及侧边栏筛选个人站点

    目录 昨日内容 django admin后台管理 使用 建表 用户图片的显示 MEDIA用户配置 查找照片 搭建个人站点 防盗链 新建css文件 侧边栏展示标签 定义分类栏与标签栏 定义时间栏 侧边栏 ...

  9. 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍

    第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...

随机推荐

  1. mysql,给每一条数据的某一个字段生成不同的随机数

    UPDATE t_article ta-- 利用LEFT JOIN的方式进行关联修改 LEFT JOIN(-- 先通过查询的方式给每一条数据生成对应的10-500之间随机数 SELECT articl ...

  2. git push --set-upstream origin

    设置本地分支追踪远程分支 之后就可以直接使用git push提交代码

  3. Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)

    08-12 16:06:12.622: E/baidumapsdk(15405): Authentication Error errorcode: 102 uid: null appid -1 msg ...

  4. Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance, we've been making all of our data members public in order to ...

  5. Hadoop-2.4.1学习之怎样确定Mapper数量

    MapReduce框架的优势是能够在集群中并行运行mapper和reducer任务,那怎样确定mapper和reducer的数量呢,或者说怎样以编程的方式控制作业启动的mapper和reducer数量 ...

  6. JDBC2.0操作:结果集,更新,插入,删除,批处理语句

    JDBC对ResultSet的支持 JDBC最重要的概念是批处理,可以一次完成多个语句的执行. 可滚动的结果集. 如果想创建可滚动的结果集,则在创建PrepareStatement时候必须指定创建的类 ...

  7. MS SQL 日常维护管理常用脚本

    --[查看数据库服务器名称] --默认实例查询 SELECT @@SERVERNAME AS SERVERNAME; SELECT SERVERPROPERTY('servername') AS Se ...

  8. 快速理解linux流编辑器sed命令

    原创 杜亦舒性能与架构 之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的 sed 是 stream editor 的简写 ...

  9. Oracle Restart能够用来给Oracle GoldenGate 做 High Availability 使用么?

    Oracle Restart能够用来给Oracle GoldenGate  做 High Availability 使用么? 来源于: Can Oracle Restart be used with ...

  10. python学习之endswith()

    定义: Python endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False.可选参数"start"与"end&q ...