zoukankan      html  css  js  c++  java
  • Django-admin

    Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理数据。

    后台管理可以在各个app的admin.py文件中进行控制。

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

    Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

    settings.py中

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

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

    首先先启动我们的Django项目,然后在浏览器中访问 http://127.0.0.1:8000/admin/,就能看到登陆界面。(具体网址和端口根据自己环境输入)

    使用 python manage.py createsuperuser 来创建管理员账号,来登录admin管理后台。

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

    admin.site.register(models.Publisher)
    admin.site.register(models.Book)
    admin.site.register(models.Author)

    在admin.py中只要按照上面的方式将某个模型类(model class)注册,即可在Admin中实现该model对应的数据表增删改查的功能。

     其次关于admin的界面汉化

    因为默认admin后台管理界面是英文的,对英语盲来说用起来不方便。可以在settings.py中设置:

    1. LANGUAGE_CODE = 'zh-CN'
    2. TIME_ZONE = 'Asia/Shanghai'

    而1.8版本之后的language code设置不同,得稍作修改:

    1. LANGUAGE_CODE = 'zh-hans'
    2. TIME_ZONE = 'Asia/Shanghai'

    比较实用的记录列表设置有显示字段、每页记录数和排序等。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    @admin.register(Blog)
    class BlogAdmin(admin.ModelAdmin):
        #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
        list_display = ('id', 'caption', 'author', 'publish_time')
        
        #list_per_page设置每页显示多少条记录,默认是100条
        list_per_page = 50
        
        #ordering设置默认排序字段,负号表示降序排序
        ordering = ('-publish_time',)
      
        #list_editable 设置默认可编辑字段
        list_editable = ['machine_room_id', 'temperature']
      
        #fk_fields 设置显示外键字段
         fk_fields = ('machine_room_id',)

      

    此处比较简单,自己尝试一下即可。

    此外ModelAdmin中还提供了大量的可定制功能,如

     1. list_display,列表时,定制显示的列。

    复制代码
    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
        list_display = ('user', 'pwd', 'xxxxx')
     
        def xxxxx(self, obj):
            return "xxxxx"
    复制代码

    2. list_display_links,列表时,定制列可以点击跳转。

    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
        list_display = ('user', 'pwd', 'xxxxx')
        list_display_links = ('pwd',)

    3. list_filter,列表时,定制右侧快速筛选。

    4. list_select_related,列表时,连表查询是否自动select_related

    5. list_editable,列表时,可以编辑的列 

    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
        list_display = ('user', 'pwd','ug',)
        list_editable = ('ug',)

    6. search_fields,列表时,模糊搜索的功能

    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
         
        search_fields = ('user', 'pwd')

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

    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
     
        date_hierarchy = 'ctime'

    8  inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除

    复制代码
    class UserInfoInline(admin.StackedInline): # TabularInline
        extra = 0
        model = models.UserInfo
     
     
    class GroupAdminMode(admin.ModelAdmin):
        list_display = ('id', 'title',)
        inlines = [UserInfoInline, ]
    复制代码

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

    复制代码
    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
     
        # 定制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
    复制代码
  • 相关阅读:
    简介anaconda下的jupyter notebook的代码分块运行
    此文件的签名已损坏或无效或360下载提示下载失败解决办法
    Java基础加强
    XML
    Servlet
    Tomcat
    json和跨域
    jQuery的ajax
    ajax请求状态码 以及 页面请求状态码
    ajax 基础
  • 原文地址:https://www.cnblogs.com/xuedine/p/11814358.html
Copyright © 2011-2022 走看看