Django测试开发-34- xadmin模板中添加action插件

一、action插件介绍

1. Action插件在数据列表页面上提供数据选择功能。可以在Action之后专门处理所选数据。批量删除功能作为默认操作提供。

2. 要启用Action,开发人员可以设置Model 中Class的属性“actions”,这是一种列表类型。

xadmin官方地址:https://xadmin.readthedocs.io/en/latest/plugins.html

二、具体操作

1. 首先需要一个Action类,继承BaseActionView

from xadmin.plugins.actions import BaseActionView

class MyAction(BaseActionView):

    # 这里需要填写三个属性
    action_name = "my_action"    #: 相当于这个 Action 的唯一标示, 尽量用比较针对性的名字
    description = _(u‘Test selected %(verbose_name_plural)s‘) #: 描述, 出现在 Action 菜单中, 可以使用 ``%(verbose_name_plural)s`` 代替 Model 的名字.

    model_perm = ‘change‘    #: 该 Action 所需权限

    # 而后实现 do_action 方法
    def do_action(self, queryset):
        # queryset 是包含了已经选择的数据的 queryset
        for obj in queryset:
            # obj 的操作
            ...
        # 返回 HttpResponse
        return HttpResponse(...)

2. 在Model中的对应Class上应用此Action

class MyModelAdmin(object):

    actions = [MyAction, ]

三、实例操作

在Student列表页,我需要勾选不同的项,实现清空学生的年龄的操作,在adminx.py同一目录新建一个adminx_actions.py文件

# action_name 这个Action的唯一标示
# description 出现在 Action 菜单中名称
# model_perm 该 Action 所需权限, 总共四种(‘add‘, ‘change‘, ‘delete‘, ‘view‘)
# icon 显示图标
# do_action 执行的动作

adminx_actions.py

from django.http import HttpResponse
from xadmin.plugins.actions import BaseActionView

class ClearAction(BaseActionView):

    """
    清空action
    """
    action_name = "clear_score"

    # 出现在 Action 菜单中名称
    description = u‘清空成绩 %(verbose_name_plural)s‘

    # action的权限
    model_perm = ‘change‘

    icon = ‘fa fa-bug‘

    def do_action(self, queryset):

        for obj in queryset:

            obj.student_age = 0
            obj.save()

        return None

adminx.py

class ControlStudent(object):

    # 显示字段
    list_display = (‘student_no‘,‘student_name‘,‘student_age‘,‘student_score‘,‘student_gender‘,‘老师‘)

    # 搜索条件
    search_fields = (‘student_name‘,)

    # 每页显示n条
    list_per_page = 5

    actions = [ClearAction,]

    def 老师(self,obj):

        return [x.teacher_name for x in obj.teachers.all()]

浏览器页面:

原文地址:https://www.cnblogs.com/chushujin/p/12614631.html

时间: 2024-10-29 09:59:42

Django测试开发-34- xadmin模板中添加action插件的相关文章

eclipse中添加svn插件

在eclipse中使用svn查看能非常方便的对代码进行查看和更新提交操作,能及时知道代码的更新状态. 在eclipse中如果要使用svn,只能使用svn插件的方式进行. 插件地址:http://subclipse.tigris.org/update_1.8.x 步骤如下: 打开eclipse查看顶上工具栏Help-> install new software 在打开的界面地址栏中输入地址:http://subclipse.tigris.org/update_1.8.x 回车,选择出现的内容一直下

Django 测试开发2

1.get方法和post方法 get方法  post方法 直接把method修改成post,报错如下,Django针对CSRF的保护措施是在生成的每个表单放置一个自动生成的令牌,通过这个令牌判断POST请求是否来自同一个网站.使用模板标签添加CSRF令牌,在from表单中添加{% csrf_token %}. 2.接收数据并处理 Django怎么接收请求数据并处理的呢,可以通过from表单的action属性来指定提交的路径.接下来需要配置新添加的路由,打开urls.py文件,添加login_ac

python测试开发django-2.templates模板与html页

前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图. 前面一章通过浏览器访问http://127.0.0.1:8000能在页面上展示出hello world的纯文本内容,通常我们打开浏览器页面,展示的是一个html页面,本篇讲下如何打开html页面. 新建应用 上一篇通过"django-admin startproject helloworld"是创建项目,一个项目下可以有多个应用(a

python测试开发django-55.xadmin使用markdown文档编辑器(django-mdeditor)

前言 markdown是一个非常好的编辑器,用过的都说好,如果搭建一个博客平台的话,需要在后台做文章编辑,可以整合一个markdown的文本编辑器. github上关于django的markdown插件很多的,看了半天也不知道选哪个好,本篇用django-mdeditor先试试 django-mdeditor pip安装django-mdeditor pip install django-mdeditor 在项目的settings.py的INSTALLED_APPS中添加'mdeditor',

Django学习系列17:在模板中渲染待办事项

前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_list_items(self): Item.objects.create(text='itemey 1') Item.objects.create(text='itemey 2') response = self.client.get('/') self.assertIn('itemey 1',

171.补充-在模板中添加权限控制

在模板中使用权限: 在settings.TEMPLATES.OPTIONS.context_process下,因为添加了django.auth.context_processors.auth上下文处理器,因此,在模板中可以直接通过perms来获取用户的所有权限,示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

Django 程序中添加js插件文本编辑器

第一步:在首页中添加写博客的按钮     <li>         <a href="{% url 'create_article' %}">写博客</a>     </li> 第二步:写相应的创建博客视图,编辑views.py文件 def create_article(request):     if request.method == "GET" :         return  render(request,'

Django(五)在模板中使用静态文件

location 最后一个文件夹名就是project名,我用了Django_Plan. Application 是自动加入的APP名字,我用了Plan 静态文件相关配置: Django_Plan\settings.py STATIC_URL = '/static/'#URL访问路径 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#URL对应的路径和URL名称设一致,编写相关代码时提示是正确的 ) 示例一个图片(1.png)

Django测试开发-29- xadmin模板中详情页面布局form_layout详解

现状: xadmin的详情页面默认是一行展示一个字段 使用form_layout: 1. 可以设置必填和非必填字段 2. 可以设置显示不显示字段, 3. 可以设置不可以编辑的字段 一.未使用form_layout之前 models.py class ArticleClassify(models.Model): '''文章分类''' article_classify = models.CharField(max_length=30, verbose_name="分类", default=