作者:刘耀

QQ:22102107

django-Admin

django amdin是django提供的一个后台管理页面,改管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后,就可以对数据进行增删改查,

而使用django admin 则需要以下步骤:

1.创建后台管理员

2.配置url

3.注册和配置django admin后台管理页面

步骤:

1.工程和创建app

注册app

修改settings

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'book',
]

2.设置表结构

以用图书管理信息设计表结构

修改book下面的model.py

加入以下内容:

from django.db import models

# Create your models here.
class Author(models.Model):
#作者
name = models.CharField(max_length=30,verbose_name='姓名')#姓名
age = models.CharField(max_length=30,verbose_name='年龄')#年龄
phone = models.CharField(max_length=11,verbose_name='手机号')#手机号
email = models.EmailField(verbose_name='邮箱')#邮箱
def __str__(self):
return self.name
class Meta:
verbose_name = '作者'
verbose_name_plural = '作者'
class Publisher(models.Model):#出版社
name = models.CharField(max_length=30,verbose_name='出版社')#出版社姓名
address = models.CharField(max_length=50,verbose_name='地址')#出版社地址
city = models.CharField(max_length=60,verbose_name='城市')#出版社城市
state_province = models.CharField(max_length=30,verbose_name='省份')#省份
country = models.CharField(max_length=50,verbose_name='国家')#国家
website = models.URLField(verbose_name='官网')#官网
def __str__(self):
return self.name
class Meta:
verbose_name = '出版社'
verbose_name_plural = '出版社'
class Book(models.Model):#书
name = models.CharField(max_length=60,verbose_name='书名')#书名
author = models.ManyToManyField(Author,verbose_name='作者')#关联作者
publisher = models.ForeignKey(Publisher,verbose_name='出版社')#关联
publication_date = models.DateField(verbose_name='出版时间')#时间
def __str__(self):
return self.name
class Meta:
verbose_name = '书名'
verbose_name_plural = '书名'

3.生成表结构

python manage.py makemigrations

python manage.py migrate

4.创建超级管理员

python manage.py createsuperuser
Username (leave blank to use 'administrator'): admin
Email address: 870000@163.com
Password:
Password (again):
Superuser created successfully.

5.查看admin后台

运行python manage.py runserver 8000

访问:http://127.0.0.1:8000/admin

此时admin是不显示咱们新加入的book相关的model

如果要加入那么需要将model注册到admin里

6.将表加入注册到admin

修改book项目下面的admin.py

from django.contrib import admin

# Register your models here.
from book import models #将作者注册到admin后台
admin.site.register(models.Author) #将书籍注册到admin后台
admin.site.register(models.Book) #将版社注册到admin后台
admin.site.register(models.Publisher)

后台查看:

之所以显示中文是因为我在定义model的时候 使用了

class Meta:
verbose_name = '书名'
verbose_name_plural = '书名' verbose_name的意思很简单,就是给你的模型类起一个更可读的名字:
为了从admin后台更好的显示罢了。其他没吊用。

7.使用admin插入一条新数据

以作者为例,点击add

输入以下字段

显示

为什么只显示刘耀这个作者呢,其他信息不显示呢,是因为我在定义model的时候

使用了

def __str__(self):
return self.name
这样的时候就是为了返回用户名给admin看。

8.使用admin的方法展示想要展示的数据

list_display = ('字段名')#把字段信息全部显示出来

修改book下面的admin.py

加入以下内容:

#创建类
class AuthorAdmin(admin.ModelAdmin):
#把这个作者表里的想要显示值放进去
list_display = ('name','age','phone','email')
#将作者注册到admin后台
admin.site.register(models.Author,AuthorAdmin)
#其他内容不需要修改

显示:

9.搜索功能

search_fields = ('name','age','phone','email') 这样就可以按照 标题或内容搜索了

代码如下:

from django.contrib import admin

# Register your models here.
from book import models class AuthorAdmin(admin.ModelAdmin):
list_display = ('name','age','phone','email')
#添加搜索功能
search_fields = ('name','age','phone','email')
#将作者注册到admin后台
admin.site.register(models.Author,AuthorAdmin)

显示:

10.编辑时候显示顺序

fields = ('name','age','phone','email') #edit界面就按这个顺序显示

class AuthorAdmin(admin.ModelAdmin):
list_display = ('name','age','phone','email')
search_fields = ('name','age','phone','email')
#编辑的时候首先显示名字 年龄 邮箱 和手机号
fields = ('name','age','email','phone')
#将作者注册到admin后台
admin.site.register(models.Author,AuthorAdmin)

显示:

11.排序

ordering = ('age',) 按照年龄排序

from django.contrib import admin

# Register your models here.
from book import models class AuthorAdmin(admin.ModelAdmin):
list_display = ('name','age','phone','email')
search_fields = ('name','age','phone','email')
fields = ('name','age','email','phone')
#按照年龄排序
ordering = ('age',)
#将作者注册到admin后台
admin.site.register(models.Author,AuthorAdmin)

显示:

12.过滤器

list_filter = ('name',)#页面右边会出现相应的过滤器选项

13.显示外键的详细信息

raw_id_fields = ("内容",)

对于ForeighKey字段,也有相应的设置,用来输入字段的ID,点击边上的

放大镜图标,也会弹出选择框

class BookAdmin(admin.ModelAdmin):
raw_id_fields = ('author','publisher',)
list_display = ('name','publication_date',) #将书籍注册到admin后台
admin.site.register(models.Book,BookAdmin)

显示:

14.扩展(使用装饰器注册admin)

@admin.register(models.Book)
class BookAdmin(admin.ModelAdmin):
raw_id_fields = ('author','publisher',)
list_display = ('name','publication_date',)

还没写完

4.django笔记之admin的更多相关文章

  1. Django笔记 —— Admin(Django站点管理界面)

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  2. django笔记三之admin的管理

    django笔记三之admin的管理 设置自动admin应用 vim todos/settings.py INSTALLED_APPS = ( 'django.contrib.admin', 新版本已 ...

  3. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  4. Django笔记 —— 高级视图和URL配置

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  5. Django笔记 —— 模型

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  6. Django笔记 —— 视图

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  7. 2.django笔记之缓存,session,cookie,ajax

    一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...

  8. 1.django笔记之django基础

    一.django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

  9. django 笔记

    最近开始接触django,一些基本的操作记录于此. 参考链接: http://www.ziqiangxuetang.com/django/django-tutorial.html django安装 s ...

随机推荐

  1. [转] 计算几何模板Orz

    #include<math.h> #define MAXN 1000 #define offset 10000 #define eps 1e-8 #define PI acos(-1.0) ...

  2. 以一个权限系统来告别WebForm —开篇

     前言: 当今是互联网的时代,我们己经阻止不了它的发展了,只有跟上脚步,才不会被抛弃,松散了这么久,该紧紧了.  背景: 我之所以说以一个权限应用系统来告别我的WebForm内部系统的生涯,是缘于我自 ...

  3. HDU #3333

    Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Descript ...

  4. ubuntu安装spark

    1.先得准备环境,需要JAVA环境,还有Python环境(默认会有) JAVA下载JDK之后配置JAVA环境变量 export JAVA_HOME=/opt/jdk1..0_45 export JRE ...

  5. libcurl with telnet

    #include <stdio.h>#include <string.h>#include <curl/curl.h>#include <curl/easy. ...

  6. js中数组以及for循环的使用

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < ...

  7. CentOS 7 firewalld使用简介

    1.firewalld简介 firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务:第二个就是加入了防火墙的“zone”概念   firewalld有图形界面和工具 ...

  8. iOS开发摇动手势实现详解

    1.当设备摇动时,系统会算出加速计的值,并告知是否发生了摇动手势.系统只会运动开始和结束时通知你,并不会在运动发生的整个过程中始终向你报告每一次运动.例如,你快速摇动设备三次,那只会收到一个摇动事件. ...

  9. [整理]iOS开发学习

    最近想趁着休假,花点时间了解下最新的iOS8下的新特性以及Swift语言(想大致了解下和Objective-C有了哪些改进和不同) 可以通过Chris Lattner:Swift 编程语言首席架构师初 ...

  10. poj1142.Smith Number(数学推导)

    Smith Number Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 825  Solved: 366 Description While skimm ...