zoukankan      html  css  js  c++  java
  • Django----admin管理工具

    admin组件使用

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

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

    复制代码
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        "app01"
    ]
    复制代码

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

    激活管理工具

    通常我们在生成项目时会在 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

    from django.db import models
     
    # Create your models here.
     
     
     
     
    class Author(models.Model):
     
        name=models.CharField( max_length=32)
        age=models.IntegerField()
     
     
        def __str__(self):
            return self.name
     
    class Publish(models.Model):
     
        name=models.CharField( max_length=32)
        email=models.EmailField()
     
        def __str__(self):
            return self.name
     
     
    class Book(models.Model):
     
        title = models.CharField( max_length=32)
        publishDate=models.DateField()
        price=models.DecimalField(max_digits=5,decimal_places=2)
     
        publisher=models.ForeignKey(to="Publish")
        authors=models.ManyToManyField(to='Author')
     
        def __str__(self):
            return self.title
    

      

    admin的定制

    在admin.py中只需要讲Mode中的某个类注册,即可在Admin中实现增删改查的功能,如:

    admin.site.register(models.UserInfo)

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

    复制代码
    方式一:
        class UserAdmin(admin.ModelAdmin):
            list_display = ('user', 'pwd',)
     
        admin.site.register(models.UserInfo, UserAdmin) # 第一个参数可以是列表
         
     
    方式二:
        @admin.register(models.UserInfo)                # 第一个参数可以是列表
        class UserAdmin(admin.ModelAdmin):
            list_display = ('user', 'pwd',)
    复制代码

    PS:参数配置:>>>>>>可调试页面配置
    这是按照 id name  emaile 来显示的页面,下面的不是继承A,而是把A放到了参数位置上,也就是传了参数

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

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

      注意问题,使用这个list_display时候,不能加多对多的字段(Many2Many,不可添加到其中),否则会报错;但是一对多可以显示,因为多对多,不知道该以什么格式显示,涉及到多个对象,所以默认不给显示,不过自己可以自定制写多对多方式来写,

     

    2. list_display_links,列表时,定制列可以点击跳转。(这个是调整字段的,设置某个字段为a标签的形式,点击即可跳转) 

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

    3、ordering,列表时,数据排序规则》》》》这是按照某个字段来排序,下面id前面加了个 — ,这是倒序的意思。

    PS:(若数据中是按照价格来排序,有同样价格的话,需要再加个字段,来设置按照那个来排序)
    @admin.register(models.UserInfo)
    class UserAdmin(admin.ModelAdmin):
        ordering = ('-id',)
        或
        def get_ordering(self, request):
            return ['-id', ]
    

    4.search_fields,列表时,模糊搜索的功能;搜索框,可以按照字段来搜索,比如name字段,也可email字段,等等

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

    5、 list_filter,列表时,定制右侧快速筛选。》》》点击下面的按钮,就会出来对应的信息,相当于filter过滤查询,这是多条件搜索查询,是整个功能里面,最难实现的的。

      这个里面一般放role,用一对多的包含,或者对多对的包含,让其有选择,放name 的话,就没有意义了。

    6、list_editable,列表时,可以编辑的列 ;随时进行编辑的效果。》》》》》》》切记,不能跟link里面的字段重复。

      下面是按照name进行编辑列

    点击即可编辑

    7、fields,详细页面时,显示字段的字段》》这是默认字段,只是添加这个字段,其他的字段,必须有默认值才行,平时没变化,编辑的时候,才有变化

    eg:把name设置字段的时候,前提,name这个必须有值。

    8、exclude,详细页面时,排除的字段》》》》跟上面的相反。

    9、 fieldsets,详细页面时,使用fieldsets标签对数据进行分割显示;必须是元祖模式,得需要逗号;基本数据会在页面显示,下面的字段会进行折叠显示。

    下面的基本数据,只是一个名字(或者叫任何名字都行),格式必须是外面一个元祖,里面是一个字典的模式,且下面的键一定得叫fields
    下面的其他样式,classes表示样式,就是以什么样式折叠,也是外面元祖,里面字典,总结,也就是基本数据里面的字段会在页面显示,而其他里面的字段,会被一个折叠的样式,折叠在其中。

     多了个折叠的效果

    10、 readonly_fields,详细页面时,只读字段;表示某个字段能看到,却无法进行任何操作,就是只读

    11、action,列表时,定制action中的操作;这是一个批量处理操作,但是函数,需要自己来写

    下面这就是把foo组装过去了,然后上面的页面点击的话,就能出现下面的中文显示自定义..

        def foo(self, request, queryset):   #queryset这个是前端页面你勾选的数据
            print(queryset)                     #只要记住这个参数,是默认给做好的,直接用就行,后期会深究
            queryset.update(email="yuan@qq.com")    #把所勾选的数据,进行批量更新操作
    
        foo.short_description = "中文显示自定义Actions" #这个函数简单的描述
        actions = [foo,]    #把foo添加到actions中,即可在前面的页面显示出来
    

      

    12

    未完待更新。。。。。。。。。。。。。。。。

     

    PS:参考博客:  http://www.cnblogs.com/yuanchenqi/articles/8323452.html#_label1

      

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/heysn21/p/8535387.html
Copyright © 2011-2022 走看看