django的admin组件使用详解

一、admin组件介绍

         admin作为django的超级用户,权限包括注册目录列表,注册用户权限,注册需要维护的数据库信息等。

 

二、admin组件的使用

       1. 启动项目

              访问localhost:8001/admin,会出现如下页面:
        
        输入用户admin,密码: admin,发现报错:

         Table 'myapp.auth_user' doesn't exist

          确定之前用的数据库有没有初始化过admin,更换数据库后,使用如下命令,即可创建新的admin用户:

         第一步: 创建迁移

python manage.py migrate

         第二步: 初始化admin用户       

 python manage.py createsuperuser
D:\pythonstudy\mysite>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying polls.0001_initial... OK
  Applying polls.0002_auto_20200806_1023... OK
  Applying polls.0003_author_blog_entry... OK
  Applying sessions.0001_initial... OK

D:\pythonstudy\mysite>python manage.py createsuperuser

    创建完毕后,使用该设置的用户名和密码,进入到此页面,即表示登录admin用户成功:

    2. 在admin里管理自己的Model

          在生成的admin.py文件里,定义一个userAdmin,将userAdmin和之前定义的user注册到admin.site里面:  

from django.contrib import admin
from polls.models import User


# Register your models here.


class UserAdmin(admin.ModelAdmin):
    list_per_page = 20
    list_display = ("username", "password")


## 注册到admin用户里
admin.site.register(User, UserAdmin)

##自定义主题
admin.site.site_header = "学生管理系统"
admin.site.site_title = "学生管理系统"
admin.site.index_title = "学生管理系统"

   user对应的Mode:
   

class User(models.Model):
    username = models.CharField(max_length=20, verbose_name="用户名", null=True)
    password = models.CharField(max_length=20, verbose_name="密码", null=True)

    def __str__(self):
        return "用户测试表"

    class Meta:
        verbose_name = "用户表"
        verbose_name_plural = "用户表"
        db_table = "sys_user"

 启动应用后,重新访问http://localhost:8001/admin,登入后,即可发现polls下面新增了一行用户表: 

然后我们就可以使用admin用户进行对表的增删改查了: 



      3. 自定义表单

           1)  fields属性

             fields为元组或者列表, 可以使用fields属性来指定显示修改的字段,如只显示student只允许Name属性修改, fields=('id','name',)

class StudentAdmin(admin.ModelAdmin):
    list_display = ['name', ]
    fields = ('name',)
    search_fields = ['name', ]

             在修改页就只显示name字段,效果如下: 
            

         2) list_display属性

             该属性为一个列表或者元组, 用来表示要显示出哪些字段在查询页面,如 list_display=['name',]

         3) search_fields属性

               该属性为一个列表或者元组, 里面的字段用来显示在查询页面可以搜索的字段。

         4)  ordering 属性

               该属性相当于mysql里的order by 默认是对查询结果进行升序排列,如 ordering = ['id'],按照id进行升序排列。

         5)list_per_page属性

               该属性相当于mysql语句的limit, 只需要给一个值即可对查询的结果进行分页,如 list_per_page=20。

         6)  list_filter属性

             该属性是用来在查询的时候做筛选过滤的作用,在页面中呈现出来的效果是一个下拉列表, admin管理者直接根据下拉列表的值来进行筛选。

              设置   ist_filter = ["description"], 在页面上显示出来的效果如下: 

           

           7)   filter_horizontal 属性

                该属性需要配合fieldsets使用:

fieldsets = (
        (None, {'fields': ('resource', 'suit', 'goal', 'material', "hour", "teacher", "image_path")}),
    )

             用来解释多对多的 models在页面中的展示,   解释的关系为manyTomany, 比如课程和老师是多对的关系。

model:

class  CourseDetail(models.Model):
  teacher = models.ManyToManyField(Teacher, verbose_name="老师")

  关联teacher, 指向 model里定义的teacher:  

 filter_horizontal = ('teacher')

    那么在设置课程的时候,老师字段呈现的效果将会出现,选择并选中后,就会到右边的框中: 

     

三、 管理注册model的view

       django的admin后台能够注册自定义的Model, 那么也可以将model默认的页面更改, 如下默认的页面:

我们可以通过重写 changelist_view 方法,来跳转到自定义的页面:

from django.contrib import admin

@admin.register(model)
class ChatAdmin(admin.ModelAdmin):
    def changelist_view(self, request, extra_content=None):
        return index(request)

:  被admin.register标记的的model不能是抽象的,否则无法注册

 

四、 为指定用户分配菜单。

 添加Permission:

 

选择几项,那么就在左菜单那么展示几项菜单,如下图:

 

 

 

 

 

 

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦钢铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值