Django之admin实战示例详解(其他篇一)

上一篇:Django之Form及ModelForm目录篇 点击跳转
目录篇:Django之其他目录篇 点击跳转
下一篇:Django之时间区问题(其他篇二)点击跳转

目录

  • admin简单介绍
  • 1.创建Django项目
  • 2.创建app(并且app目录下创建一个urls.py文件)
  • 3.settings注册app
  • 4.建表操作
  • 5.admin进行注册model表
  • 6.创建admin超级用户
  • 7.启动Django该程序
  • 8.登录Django的admin 管理页面
  • 9.开始进行admin页面介绍和操作
  • 10.DJANGO的权限设置

admin简单介绍

Django的admin内容管理页面是基于modelform实现的,虽然非常强大,但是admin有一个缺点就是权限问题,权限为表级别的,y也就是无法细节表的行数据增删改权限(举例:A用户在A表增加的数据,B用户如果有该A表的权限,那么自然就可以删除A用户增加的数据,我们都知道,就拿CSDN该博客网站,我们写的文章肯定只有我们才可以删除,我们是无法删除别的用户的文章),如果Django的权限不能满足我们就需要自主开发一个通用内容管理页面组件和一个通用的权限组件,这是后事,让我们先来体验admin管理页面强大的功能

1.创建Django项目

Django之创建项目【二】:https://blog.csdn.net/Burgess_zheng/article/details/86505526

Django之admin实战示例详解(其他篇一)_第1张图片

2.创建app(并且app目录下创建一个urls.py文件)

进入项目目录下
创建app命令:
       F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py startapp modes_handle

Django之admin实战示例详解(其他篇一)_第2张图片

3.settings注册app

路径:project_burgess/project_burgess/setting

Django之admin实战示例详解(其他篇一)_第3张图片

 

4.建表操作

路径:project_burgess/models_handle/models.py

from django.db import models

class UserType(models.Model):
    name = models.CharField(max_length=10)

    def __str__(self):
        return self.name

class M2M(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

class User(models.Model):
    name = models.CharField(max_length=32)
    email = models.EmailField(max_length=32)
    user_type = models.ForeignKey('UserType',on_delete=models.CASCADE)  # 一对多
    m = models.ManyToManyField('M2M')
    ctime = models.DateTimeField(auto_now_add=True,null=True)

5.admin进行注册model表

路径:project_burgess/models_handle/admin.py

from django.contrib import admin
from modes_handle import models
# Register your models here.

admin.site.register(models.User)
admin.site.register(models.UserType)
admin.site.register(models.M2M)

6.创建admin超级用户

Django之admin实战示例详解(其他篇一)_第4张图片

7.启动Django该程序

手动:python manage.py runserver 127.0.0.1:8000

pycharm:

Django之admin实战示例详解(其他篇一)_第5张图片

 

8.登录Django的admin 管理页面

 

Django之admin实战示例详解(其他篇一)_第6张图片

9.开始进行admin页面介绍和操作

Django之admin实战示例详解(其他篇一)_第7张图片

表名和表字段变中文

路径:project_burgess/models_handle/models.py

Django之admin实战示例详解(其他篇一)_第8张图片

刷新管理页面

Django之admin实战示例详解(其他篇一)_第9张图片

点击进入用户表

Django之admin实战示例详解(其他篇一)_第10张图片

显示对象,不好看,我们可以显示该表的name字段值

路径:project_burgess/models_handle/models.py

Django之admin实战示例详解(其他篇一)_第11张图片

刷新管理页面

Django之admin实战示例详解(其他篇一)_第12张图片

点击添加数据ADD USER

Django之admin实战示例详解(其他篇一)_第13张图片

Django之admin实战示例详解(其他篇一)_第14张图片

点击小D进入编辑删除页面

Django之admin实战示例详解(其他篇一)_第15张图片

点击Delete

Django之admin实战示例详解(其他篇一)_第16张图片

点击YES

Django之admin实战示例详解(其他篇一)_第17张图片

想要进行自定义字段过滤,根据指定字段搜索,多字段排序,页码显示数据的数量,选择某行数据,可以进行指定自定制的函数对该数据进行有效操作,指定字段不可编辑,多对多字段进行框对框的移动数据效果

路径:project_burgess/models_handle/admin.py

from django.contrib import admin
from modes_handle import models
# Register your models here.
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin



class User_Admin(admin.ModelAdmin):
    """
       list_display:admin页面对表指定字段进行显示
       list_filter : admin页面对指定字段进行过滤
       search_fields : admin页面进行搜索,只在指定字段内搜索(范围搜索)
       list_per_page :admin分页功能,指定每页显示几条数据
       readonly_fields: admin页面指定字段不可更改
       filter_horizontal: admin数据下多对多字段可以进行多选增加(框对框效果)
       action:执行对应的函数
       """
    list_display = ['name', 'email', 'user_type', 'ctime']
    list_filter = ['ctime', 'user_type',]
    search_fields = ['name',]
    # 如果是另外一张表,我们要详细到另外一张表的字段名,否则报错
    # 也就是使用admin搜索输入只会在该表的cantact字段和userprofile关联表的name字典进行搜索
    readonly_fields = ['ctime',]  # 指定字段不可更改
    list_per_page = 5  # 每页显示100个数据
    filter_horizontal = ['m',]  # consult_courses(多对多字段)

    actions = ['change_status', ]

    def change_status(self, request, querysets):  # 自定制的action必须3个形参
        querysets.update(user_type=2)  # 传进来的对象修改status字段=1


admin.site.register(models.User,User_Admin) #注册该User_Admin
admin.site.register(models.UserType)
admin.site.register(models.M2M)

刷新管理页面

Django之admin实战示例详解(其他篇一)_第18张图片

随便点击进入一行数据

Django之admin实战示例详解(其他篇一)_第19张图片

我们选择小A和小B进行执行我们自定义函数Cange status修改类型为2

Django之admin实战示例详解(其他篇一)_第20张图片

点击go

Django之admin实战示例详解(其他篇一)_第21张图片

进入类型表

Django之admin实战示例详解(其他篇一)_第22张图片

Django之admin实战示例详解(其他篇一)_第23张图片

进入类型1

Django之admin实战示例详解(其他篇一)_第24张图片

我想要在该页面显示关联我的表(我们user表有字段关联了该usertype表,所以把user表嵌套进入该页面)

路径:project_burgess/models_handle/admin.py

Django之admin实战示例详解(其他篇一)_第25张图片

刷新页面

Django之admin实战示例详解(其他篇一)_第26张图片

 

10.DJANGO的权限设置

Django之admin实战示例详解(其他篇一)_第27张图片

点击django自带的Groups表

Django之admin实战示例详解(其他篇一)_第28张图片

创建了一个sales的组,权限其实很简单,就是对Django内置的表和我们的表授权增删改这四个权限,不权限等于拥有所有表的权限,前面我们已经说过了权限最多到表层级,表内数据权限是无法涉及的

点击django自带的User表

Django之admin实战示例详解(其他篇一)_第29张图片

Django之admin实战示例详解(其他篇一)_第30张图片

上面就应该足够用了,其他的请参照汇总的参数自定义:https://blog.csdn.net/Burgess_zheng/article/details/86627408

上一篇:Django之Form及ModelForm目录篇 点击跳转
目录篇:Django之其他目录篇 点击跳转
下一篇:Django之时间区问题(其他篇二)点击跳转

你可能感兴趣的:(Django,Django实战篇【总】,Dajngo之其他篇【四】)