Django小记 后台-Admin模块



激活管理工具

urls.py

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
]

创建超级用户

python manage.py createsuperuser
# 接下来按照提示就可以完成创建

make_password | check_password

  • 自带的加密方法
  • make_password(text):加密
  • check_password(text, password) :验证密码
django.contrib.auth.hasher import make_password,check_password
  • authenticate
  • 授权验证
from django.contrib.auth import authenticate
# 授权成功返回user,否则返回None
user = authenticate(request,username=None,password=None)

属性

  • save_as
  • 在表单上启用“另存为”功能(默认False)
  • 在编辑页面将”保存并添加另一个“ 更改为“保存成新的”
save_as = True

  • save_as_continue
  • 点击保存为新的后是否跳转
  • 默认重定向是该对象的编辑视图
  • 如果设置了 save_as_continue=False,重定向将转到编辑列表视图。(默认True)

  • save_on_top
  • 在表单顶部添加保存按钮(默认False)

  • fields
  • 定义要显示的字段
  • 可以通过元组的方式让一些字段显示在同一行
fields = ('name', ('gender', 'age'))
  • fieldsets
  • 分组显示或者布局
  • 二元元组 ((block_name, {key : (val1, val2,…)}),…)
    • 第一个参数为名称
    • key 有两个常用取值:
      • fields :必填字段
      • classes:可取 collaspe(折叠)、wide(更宽)
    • val_ 为该板块要显示的字段
fieldsets = (('内容1', {'fields': ('A', 'B'),
                      'classes': ('wide',)}),
             ('内容2', {'fields': ('C',),
                      'classes': ('collapse',),
                      'description': '这是额外的描述信息'}))

  • list_display
  • 指定显示在列表页面上的字段
  • 内容可以是:模型字段、函数、ModelAdmin属性、模型的属性
list_display = ('student_num', 'name', 'class_name')

  • lsit_per_page
  • 控制每个分页的列表页面上显示数据量(默认100)
  • 设置后 list_max_show_all 有影响

  • list_max_show_all
  • 控制列表页面上 显示全部 可以显示多少条数据(默认200)

  • list_filter
  • 右侧快速筛选栏栏显示对象
  • 必须是一个元组
  • 元素可以为字段、django.contrib.admin.SimpleListFilter

  • list_display_links
  • 指定用于链接修改页面的字段

  • list_editable
  • 指定可编辑字段

  • list_select_related
  • 列表时,连表查询是否自动 select_related
  • 在列表页面上检索对象列表时使用
  • True:始终调用select_realted
  • False:查看list_display并调用select_related()(如果存在任何ForeignKey)
  • 如果需要更精细的控制,应使用元组或列表作为 list_select_related 的值。元素将直接传递给 select_related()作为参数

  • filter_horizontal | filter_vertical
  • 水平(垂直)显示过滤器
  • 用于多对多过滤器

  • radio_fields
  • 将外键或choice 字段由下拉框变成单选框
radio_fields = {"A": admin.VERTICAL}
radio_fields = {"A": admin.HORIZONTAL}

  • search_fields
  • 指定可以搜索的字段
  • 列表时,模糊搜索功能

  • show_full_result_count
  • 控制是否应在过滤的页面上显示对象的全部数量(默认True)
  • True显示为“总共”多少; False显示为“显示全部”

  • exclude
  • 详细页面时,排除的字段

  • form
  • 用于定制用户请求

  • action
  • 给列表页面提供额外的操作功能

student / models.py

from django.db import models
class Student(models.Model):
	name = ...
	gender = ...

student / admin.py

from student.models import Student
from django.contrib import admin

def change_gender_male(modeladmin, request, querset):
	queryset.update(gender='male')
change_gender_male.short_discription = '将性别改为 男'

class StudentAdmin(admin.ModelAdmin):
	actions = (change_gender_male,)
	list_display = ['name', 'gender', ...]
	# ...

或者

from student.models import Student
from django.contrib import admin

class StudentAdmin(admin.ModelAdmin):
	actions = (change_gender_male,)
	list_display = ['name', 'gender', ...]
	# ...

	def change_gender_male(self, request, querset):
		queryset.update(gender='male')
	change_gender_male.short_discription = '将性别改为 男'

请添加图片描述


  • actions_on_top | actions_on_bottom
  • 控制操作栏在页面上显示的位置

  • actions_selection_counter
  • 控制选择计数器是否显示在操作下拉列表旁边

  • readonly_fields
  • 指定只读字段

  • ordering
  • 列表时,数据排序规则
ordering = ('-id',)

  • sortable_by
  • 允许的字段参与排序
  • 只让其元组内的字段参与排序 ,其余字段将不可进行排序
sortable_by = ('name', )

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

  • inlines
  • 详细页面【模型内嵌】
  • 如果有其他表和当前表做ForeignKey,那么详细页面可以进行动态增加和删除。
class StudentAdmin(admin.ModelAdmin):
	# ...
	inlines = [ScoreAdmin,]

  • empty_value_display
  • 列数据为空时,显示默认值
from django.contrib import admin
from student.models import Student
@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    empty_value_display = "列数据为空时,默认显示"
 
    list_display = ('name','gender','doit')
 
    def doit(self,obj):
        return obj.user
    doit.empty_value_display = "指定列数据为空时,默认显示"

  • view_on_site
  • 控制是否显示“在站点上查看”按钮是否显示(默认True)
    当在模型中有get_absolute_url() 方法,则在修改页面显示 在站点上查看,可以通过将view_on_site 设置为False 不显示此按钮

常用方法

  • save_model()
  • 用于django的model保存或者修改时带入个人逻辑而可以重载的方法
  • obj:父对象在编写内容
  • change:当前执行的状态,二次保存时修改数据为True
  • form:父对象 HTML 源码
  • formsets:内联对象 HTML 源码
  • instance:内联对象 obj
def save_model(self,request,form,formsets,change):
	# ....

  • 例如写文章时,需要后天自动添加作者
from django.contrib import admin
 
class ArticleAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.author = request.user
        super().save_model(request, obj, form, change)

  • delete_model()
  • 删除站点上的数据,添加自定义行为
  • 例如:
  • 删除单个学生对象,同时删除对应的 user 表中数据
class StudentAdmin(admin.ModelAdmin):
	# ...
	def delete_model(self,request,obj):
		super().delete_model(request,obj)
		if obj.user:
			obj.user.delete()

  • delete_queryset()
  • 删除多个数据,添加自定义行为
  • 例如:
  • 删除多个学生对象时,同时删除 user 表中数据
class StudentAdmin(admin.Model):
	# ...
	def delete_queryset(self,request,queryset):
		for obj in queryset:
			obj.user.delete()
			super().delete_model(request,obj)
		return

  • get_queryset()
  • Django 的 admin 默认会展示所有对象
  • 可以重写 get_queryset 方法,控制所获取的对象
  • 例如:
  • 超级用户则展示所有文章,普通用户仅展示自己所发表文章
class ArticleAdmin(admin.ModelAdmin):
	def get_queryset(self, request):
		queryset = super().get_queryset(request)
		if request.user.is_superuser:
			return queryset
		return queryset.filter(author=request.user)

模型注册到Admin

admin.site.register(Student, StudentAdmin)

from django.contrib import admin
from student.models import Student

class StudentAdmin(admin.ModelAdmin):
	# ....

admin.site.register(Student, StudentAdmin)

@admin.site.register(Student)

from django.contrib import admin
from student.models import Student

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
	# ...
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 你可以回答这个问题。django-vue-admin 是一个基于 Django 和 Vue.js 的全栈开发框架,可以快速搭建后台管理系统。它提供了丰富的组件和插件,可以帮助开发者快速构建出美观、易用的管理界面。 ### 回答2: django-vue-admin是一个基于Django和Vue.js开发的开源管理系统框架,旨在帮助开发者快速构建和定制现代化的管理系统。它采用前后端分离的架构,后端使用Django提供API接口,前端使用Vue.js进行展示和交互。 使用django-vue-admin,开发者可以快速搭建一个具备基本功能的管理系统。框架提供了一套完整的通用模型和视图,开发者只需根据自己的需求进行配置和扩展即可实现快速开发。同时,它采用了模块化和组件化的设计,开发者可以方便地替换和定制界面的各个组件,实现个性化的界面展示。 django-vue-admin还提供了丰富的功能模块,如用户管理、权限管理、角色管理、菜单管理等,开发者可以根据项目需要进行选择和集成。框架还支持多语言和多主题的配置,方便开发者根据不同用户需求进行界面定制。 此外,django-vue-admin还面向中小型项目进行了性能优化,采用了异步加载、缓存和CDN加速等技术,提高了系统的响应速度和用户体验。 总的来说,django-vue-admin是一个强大而灵活的管理系统开发框架,它简化了开发者的开发流程,提高了开发效率。无论是快速搭建简单的管理系统,还是进行个性化的定制开发,都可以选择django-vue-admin作为开发工具。 ### 回答3: django-vue-admin 是一个用于快速开发后台管理系统的开源项目。它的主要特点是结合了 Django 和 Vue.js 框架的优势,使开发者能够高效地创建功能完善、界面友好的管理系统。 django-vue-admin 提供了一套基础的后台管理功能,包括用户管理、角色管理、权限管理、日志管理等。开发者可以根据自己的需求进行功能定制和扩展。 django-vue-admin 的前端使用了 Vue.js 框架,通过组件化的方式构建用户界面,并且使用了 Element-UI 组件库来提供丰富的UI组件。这使得开发者能够快速搭建出现代化、响应式的管理系统界面。后端则使用了 Django 框架,提供了强大的数据处理和权限控制能力。 在开发上,django-vue-admin 使用了前后端分离的架构,前端和后端通过 API 进行通信。这使得开发者可以独立地进行前后端开发,提高了开发效率和团队协作能力。同时,由于前后端分离的优势,django-vue-admin 的性能也得到了明显的提升。 总之,django-vue-admin 是一个功能强大、易用、高效的后台管理系统开发框架。它能够帮助开发者快速开发出现代化的后台管理系统,并且具备良好的扩展能力。无论是个人开发者还是企业开发团队,都可以利用 django-vue-admin 来构建稳定、高效的管理系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

薛定谔的壳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值