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',)

还没写完

优质内容筛选与推荐>>
1、链表实现字典
2、智能等待页面元素出现
3、【转载】自己改造 VSPaste 插件
4、BZOJ2301 [HAOI2011]Problem b
5、sql查询过程分析--不定期更新


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号