zoukankan      html  css  js  c++  java
  • Django admin使用

     Django 提供了基于 web 的管理工具。

    django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        "app01"
    ]
    settings.py中

    django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

    启动admin管理工具

      要启动admin管理工具,只需要在urls.py中启用admin对应的路由配置项即可。通常我们在使用PyCharm生成项目时会在 urls.py 中自动设置好。

    from django.conf.urls import url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    
    ]

    1、创建超级用户

    python manage.py createsuperuser

    2、想要在admin 界面管理某个数据模型(model),我们需要先将该数据模型(model)注册到 admin。admin.py

    from django.contrib import admin
    from app import models
    
    # Register your models here.
    
    admin.site.register(models.UserInfo)

    3、admin界面设置为中文,需要在setting配置文件中修改

    LANGUAGE_CODE = 'zh-hans'

    4、admin登录:用超级用户登录

    http://127.0.0.1:8000/admin

    5、登录成功进入后台首页

     6、在models中用元信息设置别名,例:

        class Meta:
            verbose_name = '评论表'
            verbose_name_plural = verbose_name

    7、字段属性blank=True时,该字段在django admin里面可以不填,例:

    parent_comment = models.ForeignKey("self", null=True, blank=True)

     更多功能:点击参考

    admin定制:

      这种方式的注册比较简单,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:

    # 注册方式一
    class UserInfoAdmin(admin.ModelAdmin):
        list_display = ['username', 'blog']
    
    admin.site.register(models.UserInfo, UserInfoAdmin)
    
    
    
    # 注册方式二
    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
        list_display = ['username', 'blog']

      ModelAdmin支持的定制项:

        list_display:列表时,定制这张表显示哪些列,多对多关系字段无法放入,可以放自定义的函数

    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
        list_display = ['username', 'blog']

    显示效果:

      

    还可以定义一个函数,给表添加一列:

    from django.utils.safestring import mark_safe
    
    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
    
        def delete_obj(self):
            return mark_safe('<a href="#">删除</a>')
    
        list_display = ['username', 'blog', delete_obj]

    显示效果:

      

      list_display_links:列表时,哪个字段可以点击跳转 

    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
        list_display = ['username', 'blog']
        list_display_links = ['blog']

    效果图:

       

       list_filter:列表时,定制右侧快速筛选。例如价格相同,出版社相同等等

    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
    
        def deletes(self):
            return mark_safe('<a href="#">删除</a>')
    
        list_display = ['username', 'blog', deletes]
        list_display_links = ['blog']
        list_filter = ['username']

    效果图:

      

      list_editable:列表时,可以直接编辑的列,与list_display_links有冲突

    from django.utils.safestring import mark_safe
    
    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
    
        def deletes(self):
            return mark_safe('<a href="#">删除</a>')
    
        list_display = ['username', 'blog', deletes]
        list_display_links = ['blog']
        list_filter = ['username']
        list_editable = ['username']

    效果图:

      

       search_fields:列表时,模糊搜索的功能。可以给多个字段,或的关系

    search_fields = ['username']

    效果图:

      

      date_hierarchy:列表时,对Date和DateTime类型进行搜索

    @admin.register(models.UserInfo)
    class UserInfoAdmin(admin.ModelAdmin):
    
        def deletes(self):
            return mark_safe('<a href="#">删除</a>')
    
        list_display = ['username', 'blog', 'create_time', deletes]
        list_display_links = ['blog']   # 可以点击的链接
        list_filter = ['username']      # 过滤
        list_editable = ['username']    # 可以编辑的列
        search_fields = ['username']    # 模糊搜索
        date_hierarchy = 'create_time'  # 对日期搜索

      效果图:  

      

      

      action:列表时,定制action中的操作

     # 定制Action行为具体方法
        def func(self, request, queryset):
            # 选中后需要实现的功能,修改或者删除等
            print(self, request, queryset)
            print(request.POST.getlist('_selected_action'))
    
        func.short_description = "中文显示自定义Actions"
        actions = [func, ]
    
        # Action选项都是在页面上方显示
        actions_on_top = True
        # Action选项都是在页面下方显示
        actions_on_bottom = False
    
        # 是否显示选择个数
        actions_selection_counter = True

    效果图:

      

      

      fields:详细页面时(编辑页面),显示字段的字段,即需要编辑的字段,用于隐藏有默认值的字段或者可以为空的字段

    fields = ['username']

    效果图:

      

     更多参数参考:点击

    效果对照: 

      

  • 相关阅读:
    从csdn转移到博客园的一篇测试文章
    接口与抽象类的区别
    python网络爬虫进阶之HTTP原理,爬虫的基本原理,Cookies和代理介绍
    python验证码识别(2)极验滑动验证码识别
    VMWare虚拟机应用介绍
    Rpg maker mv角色扮演游戏制作大师简介
    python数据挖掘之数据探索第一篇
    python数据分析&挖掘,机器学习环境配置
    python爬取豆瓣视频信息代码
    python验证码处理(1)
  • 原文地址:https://www.cnblogs.com/aizhinong/p/12268624.html
Copyright © 2011-2022 走看看