zoukankan      html  css  js  c++  java
  • 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',)
    

    还没写完

  • 相关阅读:
    J.U.C并发框架源码阅读(十五)CopyOnWriteArrayList
    J.U.C并发框架源码阅读(十四)ScheduledThreadPoolExecutor
    J.U.C并发框架源码阅读(十三)ThreadPoolExecutor
    Django基础之request对象
    Django基础之给视图加装饰器
    Django基础之初识视图
    Django基础之CBV和FBV
    Django基础之template
    Django基础之命名空间模式(include)
    Django基础之命名URL和URL反向解析
  • 原文地址:https://www.cnblogs.com/liu-yao/p/5580446.html
Copyright © 2011-2022 走看看