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. 关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码

    一直有人问HTML加密混淆怎么做,其实这在业内是早已很多人研究过的课题.假日期间整理一篇文章分享给大家. 我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?我们知道这个世界不存在 ...

  2. Vue 表单

    1.v-model v-model不再关心初始化的value值. <!DOCTYPE html> <html lang="zh"> <head> ...

  3. JBOSS 中oracle-ds.xml的配置模板

    http://blog.csdn.net/bo_hai/article/details/6076979 JBOSS 中oracle-ds.xml的配置模板.   代码模版: <?xml vers ...

  4. jsp版本的环境变量集合

    System.out.println("Protocol: " + request.getProtocol());System.out.println("Scheme: ...

  5. php学记笔记之函数用途

    echo '<pre>';//格式化输出字符 isset();//判断变量是否存在 array_key_exists('key',$arr);//判断数组下标是否存在 in_array(' ...

  6. IOS 拍照旋转修正

    - (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (a ...

  7. Redis 5种数据类型,2种特殊数据处理策略

    5种数据类型 String [html] view plaincopy 1.String   经常使用命令:   除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操 ...

  8. NGUI 取ScrollView中遮罩区域4个点

    用panel.localCorners而不是panel.finalClipRegion,Region还要再换算 首先通过ScrollView取panel,然后取Corners,它返回值代表4个点,映射 ...

  9. 设计模式_CallBack

    一.基本概念 if you call me, i will call back 什么是回调函数  回调函数(callback Function),顾名思义,用于回调的函数. 回调函数只是一个功能片段, ...

  10. Yii2基础常用笔记

    表单验证规则写在model类里,例如: 通过表单输入的值给模型属性填充数据用模型对象的load方法. $model->load(Yii::$app->request->post())