4.django笔记之admin
作者:刘耀
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的更多相关文章
- Django笔记 —— Admin(Django站点管理界面)
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- django笔记三之admin的管理
django笔记三之admin的管理 设置自动admin应用 vim todos/settings.py INSTALLED_APPS = ( 'django.contrib.admin', 新版本已 ...
- Web框架——Django笔记
Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序 ...
- Django笔记 —— 高级视图和URL配置
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django笔记 —— 模型
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django笔记 —— 视图
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- 2.django笔记之缓存,session,cookie,ajax
一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...
- 1.django笔记之django基础
一.django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...
- django 笔记
最近开始接触django,一些基本的操作记录于此. 参考链接: http://www.ziqiangxuetang.com/django/django-tutorial.html django安装 s ...
随机推荐
- Query对象与DOM对象之间的转换方法
转自http://www.jquerycn.cn/a_4561 刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象.至于DOM对象不多解释,我们接触的太多了,下面重点介 ...
- codeforces 719A:Vitya in the Countryside
Description Every summer Vitya comes to visit his grandmother in the countryside. This summer, he go ...
- POJ1067 取石子游戏
Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- HYSBZ - 2152 聪聪和可可
Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好 ...
- Spring监听器配置
使用spring框架时如果同时使用org.springframework.web.util.Log4jConfigListener监听器,那么在web.xml中的监听器的注册顺序为org.spring ...
- UVA11584 划分成回文串
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/B 紫书275 题意:输入一个字符,最少能划分几个回文串 分析 ...
- Android应用目录结构分析
一.手动创建android项目 手动创建一个Android项目,命名为HelloWorld,命令如下: android create project -n HelloWorld -t 1 -p E:/ ...
- Tomcat入门指南
转自javaresearch.com由timgball 整理 Tomcat是一个免费的开源Web服务器,最新版本是5.5.1,支持Servlet2.4,JSP2.0,非常适合初学者学习Java Web ...
- 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码: 四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1. ...
- C++ 迭代器 基础介绍
C++ 迭代器 基础介绍 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定 ...