Xadmin文档(二)

转载自:https://xadmin.readthedocs.org/en/latest/views_api.html

Views

class xadmin.views. BaseAdminObject

提供给 BaseAdminView BaseAdminPlugin 的通用基类,主要是提供了一些常用的通用方法

get_admin_url ( name, *args, **kwargs )

便捷方法,方便的通过 name 取得 url,会加上 AdminSite.app_name 的 url namespace

get_form_params ( new_params=None, remove=None )

将当前 request 的参数,新加或是删除后,生成 hidden input。用于放入 HTML 的 Form 中。

参数:
  • new_params – 要新加的参数,该参数为 dict
  • remove – 要删除的参数,该参数为 list, tuple
get_model_perm ( model, name )

获取 Model 的某种权限标签,标签的格式为:

>>> view.get_model_perm(User, 'view')
>>> 'auth.user_view'
get_model_url ( model, name, *args, **kwargs )

便捷方法,方便的通过 model, name 取得 url,会自动拼成 urlname,并会加上 AdminSite.app_name 的 url namespace

get_model_view ( view_class, model, *args, **kwargs )

获取 ModelAdminViewClass 的实例。首先通过 AdminSite 取得 model 对应的 OptionClass,然后调用 get_view() 方法

参数:
  • view_class – ModelAdminViewClass 的类
  • model – 绑定的 Model 类
get_query_string ( new_params=None, remove=None )

在当前的query_string基础上生成新的query_string

参数:
  • new_params – 要新加的参数,该参数为 dict
  • remove – 要删除的参数,该参数为 list, tuple
get_view ( view_class, option_class=None, *args, **kwargs )

获取 AdminViewClass 的实例。实际上就是调用 get_view_class() 方法

参数:
  • view_class – AdminViewClass 的类
  • option_class – 希望与 AdminViewClass 合并的 OptionClass
has_model_perm ( model, name, user=None )

判断当前用户是否有某个 Model 的 某种权限,例如:

>>> view.has_model_perm(User, 'view')
>>> True
render_response ( content, response_type='json' )

便捷方法,方便生成 HttpResponse,如果 response_type 为 json 会自动转为 json 格式后输出

static ( path )

xadmin.util.static() 的快捷方法,返回静态文件的 url。

template_response ( template, context )

便捷方法,方便生成 TemplateResponse

class xadmin.views. BaseAdminPlugin ( admin_view )

所有 Plugin 的基类。继承于 BaseAdminObject 。插件的注册和使用可以参看 xadmin.sites.AdminSite.register_plugin() ,插件的原理可以参看 filter_hook() :

filter_hook ( func )

表明 AdminView 的方法可以被插件插入的装饰器。执行使用了该装饰器的方法时,会按照以下过程执行:

  1. 首先将实例的 plugins 属性取出,取出含有同样方法名的插件

  2. 按照插件方法的 priority 属性排序

  3. 顺序执行插件方法,执行插件方法的规则:

    • 如果插件方法没有参数,AdminView 方法的返回结果不为空则抛出异常

    • 如果插件方法的第一个参数为 __ ,则 AdminView 方法将作为第一个参数传入,注意,这时还未执行该方法,在插件中可以通过 __() 执行,这样就可以实现插件在 AdminView 方法执行前实现一些自己的逻辑,例如:

      def get_context(self, __):
          c = {'key': 'value'}
          c.update(__())
          return c
      
    • 如果插件方法的第一个参数不为 __ ,则执行 AdminView 方法,将结果作为第一个参数传入

  4. 最终将插件顺序执行的结果返回

init_request ( *args, **kwargs )

插件的初始化方法,Plugin 实例化后被调用的第一个方法。该方法主要用于初始化插件需要的属性,同时判断当前请求是否需要加载该插件,例如 Ajax插件的实现方式:

def init_request(self, *args, **kwargs):
    return bool(self.request.is_ajax() or self.request.REQUEST.get('_ajax'))

当返回值为 False 时,所属的 AdminView 实例不会加载该插件

class xadmin.views. BaseAdminView ( request, *args, **kwargs )

所有 AdminView 的基类。继承于 BaseAdminObjectdjango.views.generic.View

该类是 xadmin 中 最核心 的类,所有的 AdminView 都需要继承此类。xadmin 与 Django Admin最大的区别就在于 xadmin 每次请求会产生一个 AdminView 的实例,也就是基于 Class 的 view 方式。该方式在 Django 1.3 被实现,可以参看 Django 的官方文档Class-based generic views

使用 Class 的方式实现的好处显而易见。首先,每一次请求都会产生一个新的实例,这样 request 这种变量就可以保存在实例中,基类的扩展,或是复写父类方法时再也不用带着 request 到处跑了,当然,除了 request 还有很多可以基于实例存储的变量。

其次,基于实例的方式非常方便的实现了插件功能,而且还能实现插件的动态加载,因为每个 AdminView 实例可以根据自身实例的属性情况来判断加载哪些插件,具体信息也可以参看 BaseAdminPlugin 的描述。

实现一个自己的 AdminView 类很简单,举例如下:

from xadmin.sites import site
from xadmin.views import BaseAdminView

class MyAdminView(BaseAdminView):

    def get(self, request, *args, **kwargs):
        pass

site.register_view(r'^me_test/$', MyAdminView, name='my_test')

而后您就可以在 me_test/ 访问到该view了。当然xadmin同事提供了一些通用的 AdminView,分别为

  • CommAdminView : xadmin通用界面的基础View,提供了xadmin通用界面需要的一些数据(菜单等)
  • ModelAdminView : 核心类之一,提供了基于 Model 的 AdminView。
classmethod as_view ( )

复写了 View.as_view() 方法,主要是将 View.dispatch() 的也写到了本方法中,并且去掉了一些初始化操作,因为这些初始化操作在 AdminView 的初始化方法中已经完成了,可以参看 BaseAdminView.init_request()

get_context ( *args, **kwargs )

filter_hook

返回显示页面所需的 context 对象。

get_media ( *args, **kwargs )

filter_hook

取得页面所需的 Media 对象,用于生成 css 和 js 文件

init_plugin ( *args, **kwargs )

AdminView 实例中插件的初始化方法,在 BaseAdminView.init_request() 后调用。根据 AdminView 中的 base_plugins 属性将插件逐一初始化,既调用 BaseAdminPlugin.init_request() 方法,并根据返回结果判断是否加载该插件。最后该方法会将初始化后的插件设置为 plugins 属性。

init_request ( *args, **kwargs )

一般用于子类复写的初始化方法,在 AdminView 实例化时调用,:class:BaseAdminView 的该方法不做任何操作。

class xadmin.views. CommAdminView ( request, *args, **kwargs )

基于 BaseAdminView 提供的通用 AdminView。主要是完成了一些 xadmin 页面通用内容的处理。主要有:

  • 网站标题
  • 全局的 Model 图标
  • 网站菜单

View属性:

site_title = None

网站的标题

globe_models_icon = {}

全局的 Model 图标:

globe_models_icon = {User: 'user-icon'}
get_context ( *args, **kwargs )

filter_hook

Context Params :

site_title : 使用 site_title 属性,默认为 “Django Xadmin”

nav_menu : 权限过滤后的系统菜单项,如果在非 DEBUG 模式,该项会缓存在 SESSION 中

get_model_icon ( *args, **kwargs )

filter_hook

取得 Model 图标,Model 图标会作为 css class,一般生成 HTML 如下:

<i class="icon-model icon-{{model_icon}}"></i>

这是 Bootstrap 标准的图标格式,xadmin 目前是用了 Font Icon (Font-Awesome),您可以制作自己的图标,具体信息可以参考如何制作自己的字体图标

注解

Model 图标,目前被使用在以下几个地方,当然您也可以随时使用在自己实现的页面中:

  • 系统菜单
  • 列表页面标题中
  • 添加、修改及删除页面的标题中

FAQ: 如果定义 Model 图标

您可以在 CommAdminView 的 OptionClass 中通过 CommAdminView.globe_models_icon 属性设定全局的 Model 图标。或者在 Model 的 OptionClass 中设置 model_icon 属性。

get_nav_menu ( *args, **kwargs )

filter_hook

返回网站菜单,如果 get_site_menu() 返回的结果不是 None ,那么将把其返回结果作为菜单的第一部分,而后会补全没有出现的 Model 列表页菜单项,如果 get_site_menu() 返回为 None, 那么将自动根据 App 和 Model 生成两级的菜单。

返回类型:格式见 get_site_menu() 返回格式
get_site_menu ( )

FAQ:如何定制系统菜单

用于给子类复写的方法,开发者可以在子类或 OptionClass 中复写该方法,返回自己定义的网站菜单。菜单的格式为:

({
    "title": "菜单标题", "perm": "权限标示", 
    "icon": "图标的 css class", "url": "菜单url", 
    "menus": [...]    # 子菜单项
})

菜单项的 perm url 如果是基于 Model 的,可以使用 xadmin 提供的便利方法 BaseAdminObject.get_model_perm() 和 :meth:`BaseAdminObject.get_model_url`。举例说明创建菜单:

class AdminSettings(object):

    def get_site_menu(self):
        return (
            {'title': '内容管理', 'perm': self.get_model_perm(Article, 'change'), 'menus':(
                {'title': '游戏资料', 'icon': 'info-sign', 'url': self.get_model_url(Article, 'changelist') + '?_rel_categories__id__exact=2'},
                {'title': '网站文章', 'icon': 'file', 'url': self.get_model_url(Article, 'changelist') + '?_rel_categories__id__exact=1'},
            )},
            {'title': '分类管理', 'perm': self.get_model_perm(Category, 'change'), 'menus':(
                {'title': '主要分类', 'url': self.get_model_url(Category, 'changelist') + '?_p_parent__isnull=True'},
                {'title': '游戏资料', 'url': self.get_model_url(Category, 'changelist') + '?_rel_parent__id__exact=2'},
            )},
        )

site.register(CommAdminView, AdminSettings)
message_user ( *args, **kwargs )

filter_hook

向用户显示一个消息,这个消息会在页面生成的时候生成以下 HTML:

{% for message in messages %}
<div class="alert{% if message.tags %} alert-{{ message.tags }}{% endif %}">
  <a class="close" data-dismiss="alert" href="#">&times;</a>
  {{ message }}
</div>
{% endfor %}

这是标准的 Bootstrap 格式。xadmin默认使用 django.contrib.messages 实现消息系统

参数:
  • message – 消息内容
  • level – 消息等级,默认为 info
class xadmin.views. ModelAdminView ( request, *args, **kwargs )

基于 Model 的 AdminView,该类的子类,在 AdminSite 生成 urls 时,会为每一个注册的 Model 生成一个 url 映射。ModelAdminView 注册时使用 xadmin.sites.AdminSite.register_modelview() 方法注册,具体使用实例可以参见该方法的说明,或参考实例:

from xadmin.views import ModelAdminView

class TestModelAdminView(ModelAdminView):
    
    def get(self, request, obj_id):
        pass

site.register_modelview(r'^(.+)/test/$', TestModelAdminView, name='%s_%s_test')

注册后,用户可以通过访问 /%(app_label)s/%(module_name)s/123/test 访问到该view

Option 属性

fields = None

(list,tuple) 默认显示的字段

exclude = None

(list,tuple) 排除的字段,主要用在编辑页面

ordering = None

(dict) 获取 Model 的 queryset 时默认的排序规则

model = None

绑定的 Model 类,在注册 Model 时,该项会自动附在 OptionClass 中,见方法 AdminSite.register()

实例属性

opts

即 Model._meta

app_label

即 Model._meta.app_label

module_name

即 Model._meta.module_name

model_info

即 (self.app_label, self.module_name)

get_context ( *args, **kwargs )

filter_hook

Context Params :

opts : Model 的 _meta

app_label : Model 的 app_label

module_name : Model 的 module_name

verbose_name : Model 的 verbose_name

get_model_perms ( )

返回包含 Model 所有权限的 dict。dict 的 key 值为: add view change delete , value 为 boolean 值,表示当前用户是否具有相应的权限。

get_object ( *args, **kwargs )

filter_hook

根据 object_id 获得唯一的 Model 实例,如果 pk 为 object_id 的 Model 不存在,则返回 None

get_ordering ( )

返回 Model 列表的 ordering, 默认就是返回 ModelAdminView.ordering ,子类可以复写该方法

get_template_list ( template_name )

根据 template_name 返回一个 templates 列表,生成页面是在这些列表中寻找存在的模板。这样,您就能方便的复写某些模板。列表的格式为:

"xadmin/%s/%s/%s" % (opts.app_label, opts.object_name.lower(), template_name),
"xadmin/%s/%s" % (opts.app_label, template_name),
"xadmin/%s" % template_name,
has_add_permission ( )

返回当前用户是否有添加权限

has_change_permission ( obj=None )

返回当前用户是否有修改权限

has_delete_permission ( obj=None )

返回当前用户是否有删除权限

has_view_permission ( obj=None )

返回当前用户是否有查看权限

注解

目前的实现为:如果一个用户有对数据的修改权限,那么他就有对数据的查看权限。当然您可以在子类中修改这一规则

model_admin_url ( name, *args, **kwargs )

等同于 BaseAdminObject.get_admin_url() ,只是无需填写 model 参数, 使用本身的 ModelAdminView.model 属性。

queryset ( )

返回 Model 的 queryset。可以使用该属性查询 Model 数据。

class xadmin.views. ListAdminView ( request, *args, **kwargs )

显示数据列表的 AdminView, 该 View 实现了基本的数据排序和分页等功能.

Option 属性

list_display = ('__str__',)

默认显示列

list_display_links = ()

显示修改或查看数据详情连接的列

list_select_related = False

是否提前加载关联数据, 使用 select_related

list_per_page = 50

每页显示数据的条数

list_max_show_all = 200

每页最大显示数据的条数

list_exclude = ()

排除显示的列, 在显示列的设置中不会出现这些被排除的列

search_fields = ()

按照这些列搜索数据

ordering = None

默认的数据排序

object_list_template = None

显示数据的模板

get ( *args, **kwargs )

filter_hook

显示 Model 列表.

get_check_field_url ( f )

返回 显示列 菜单项中每一项的 url.

get_context ( *args, **kwargs )

filter_hook

Context Params :

model_fields : 用于 选择显示列 功能, 保存所有可显示的列信息

result_headers : 显示列表的头部信息, 是 ResultHeader 列表

results : 显示列表的内容信息, 是 ResultItem 列表

get_list_display ( *args, **kwargs )

filter_hook

获得列表显示的列. 如果 request 中有 _cols 参数, 则使用该参数, 否则使用 list_display.

注解

该方法会赋值 base_list_display 属性, 保存 list_display. 如果有插件修改了该方法的返回值(例如: Action 插件), 可能会增加其他列. 但是这些列可能对其他插件没有意义(例如: 导出数据插件). 那么其他插件可以使用base_list_display 这个属性, 取得最原始的显示列.

get_list_display_links ( *args, **kwargs )

filter_hook

返回一组列, 这些列的数据会以链接形式显示, 连接地址可能是数据修改页面(如果有修改权限), 或是查看页面. 默认情况下会使用 list_display_links , 如果 list_display_links 为空, 则返回 list_display 第一列.

get_list_queryset ( *args, **kwargs )

filter_hook

取得 Model 的 queryset, 该 queryset 已经进行排序和过滤过. 其他插件可以在这里修改 queryset

get_media ( *args, **kwargs )

filter_hook

返回列表页面的 Media, 该页面添加了 xadmin.page.list.js 文件

get_model_method_fields ( )

将所有 OptionClass 中含有 is_column=True 的方法, 使用 FakeMethodField 包装成一个假的 DB Field. 用于在选择显示列的功能中显示.

get_ordering ( *args, **kwargs )

filter_hook

Returns the list of ordering fields for the change list.First we check the get_ordering() method in model admin, then we checkthe object’s default ordering. Then, any manually-specified orderingfrom the query string overrides anything. Finally, a deterministicorder is guaranteed by ensuring the primary key is used as the lastordering field.

get_ordering_field ( *args, **kwargs )

filter_hook

根据参数 field_name 获取需要排序 Field 的名字. field_name 可能是 Model 的一个标准 DB Field, 也有可能是可执行方法, 或是 OptionClass 及 Model 的一个属性, 这种情况下会取其 admin_order_field 属性作为排序字段, 如果取不到, 则返回 None. 例如:

class UserAdmin(object):
    def my_field(self, obj):
        return obj.name.lower()
    my_field.admin_order_field = 'name'
get_ordering_field_columns ( *args, **kwargs )

filter_hook

Returns a SortedDict of ordering field column numbers and asc/desc

get_page_number ( *args, **kwargs )

filter_hook

返回翻页组件各页码显示的 HTML 内容. 默认使用 bootstrap 样式

参数:i – 页码, 可能是 DOT
get_paginator ( *args, **kwargs )

filter_hook

返回 paginator 实例, 使用 paginator_class 类实例化

get_response ( *args, **kwargs )

filter_hook

get_context() 之后执行. 该方法默认无返回内容, 插件可以复写该方法, 返回指定的 HttpResponse.

get_result_list ( *args, **kwargs )

filter_hook

init_request ( *args, **kwargs )

初始化请求, 首先判断当前用户有无 view 权限, 而后进行一些生成数据列表所需的变量的初始化操作.

make_result_list ( )

该方法负责生成数据列表及分页信息. 数据列表会赋值给属性 result_list , 插件可以在该方法后执行一些数据处理.

post ( *args, **kwargs )

filter_hook

显示 Model 列表的 POST 请求, 默认跟 GET 请求返回同样的结果, 插件可以通过复写 post_response() 方法改变 POST 请求的返回

post_response ( *args, **kwargs )

filter_hook

列表的 POST 请求, 该方法默认无返回内容, 插件可以复写该方法, 返回指定的 HttpResponse.

post_result_list ( *args, **kwargs )

filter_hook

result_header ( *args, **kwargs )

filter_hook

返回某一列的头信息, 一个 ResultHeader 实例.

参数:
  • field_name – 列的名字
  • rowResultHeader 实例
result_headers ( *args, **kwargs )

filter_hook

返回列表的列头信息. 返回一个 ResultRow 实例, 其 cells 属性包含列信息

result_item ( *args, **kwargs )

filter_hook

返回某一对象某一列的数据, ResultItem 实例.

参数:
  • obj – Model 对象
  • field_name – 列的名字
  • rowResultHeader 实例
result_row ( *args, **kwargs )

filter_hook

返回列表某一行的内容信息. 返回一个 ResultRow 实例, 其 cells 属性包含各列内容信息

参数:obj – Model 对象
results ( *args, **kwargs )

filter_hook

返回整个列表内容信息. 返回一个 ResultRow 的数据, 包含各行信息

url_for_result ( *args, **kwargs )

filter_hook

返回列表内容连接. 如果当前用户有修改权限就返回修改页面的连接, 否则返回查看详情页面连接

参数:result – Model 对象
class xadmin.views. ModelFormAdminView ( request, *args, **kwargs )

用于添加或修改数据的 AdminView,该类是一个基类,提供了数据表单显示及修改等通用功能,被 CreateAdminView UpdateAdminView 继承

Option 属性

form = <class 'django.forms.models.ModelForm'>

使用 Model 生成 Form 的基本 Form 类,默认为 django.forms.ModelForm

formfield_overrides = {}

可以指定某种类型的 DB Field,使用指定的 Form Field 属性,例如:

class AtricleAdmin(object):
    formfield_overrides = {
        models.FileField:{'widget': mywidgets.XFileWidget},
    }

这样,显示所有 FileField 字段时,都会使用 mywidgets.XFileWidget 来显示

readonly_fields = ()

只读的字段,这些字段不能被编辑

style_fields = {}

指定 Field 的 Style, Style一般用来实现同一种类型的字段的不同效果,例如同样是 radio button,有普通及``inline``两种 Style。通常 xadmin 针对表单的插件会实现更多的 Field Style。您使用这些插件后,只要方便的将想要使用插件效果的字段设置成插件实现的 Style 即可,例如:

class AtricleAdmin(object):
    style_fields = {"content": "rich-textarea"}

rich-textarea 可能是某插件提供的 Style,这样显示 content 字段时就会使用该插件的效果了

relfield_style = None

当 Model 是其他 Model 的 ref model 时,其他 Model 在显示本 Model 的字段时使用的 Field Style

save_as = False

是否显示 另存为 按钮

save_on_top = False

是否在页面上面显示按钮组

add_form_template = None

添加页面的模板

change_form_template = None

修改页面的模板

form_layout = None

页面 Form 的 Layout 对象,是一个标准的 Crispy Form Layout 对象。使用 Layout 可以方便的定义整个 Form 页面的结构。有关 Crispy Form 可以参考其文档 Crispy Form 文档设置 form_layout 的示例:

from xadmin.layout import Main, Side, Fieldset, Row, AppendedText

class AtricleAdmin(object):
    form_layout = (
        Main(
            Fieldset('Comm data',
                'title', 'category'
            ),
            Inline(Log),
            Fieldset('Details',
                'short_title',
                Row(AppendedText('file_size', 'MB'), 'author'),
                'content'
            ),
        ),
        Side(
            Fieldset('Status',
                'status',
            ),
        )
    )

有关 Layout 中元素的信息,可以参看文档 form_layout

formfield_for_dbfield ( *args, **kwargs )

filter_hook

生成表单时的回调方法,返回 Form Field。

参数:db_field – Model 的 DB Field
get ( *args, **kwargs )

filter_hook

显示表单。具体的程序执行流程为:

  1. prepare_form()

  2. instance_forms()

    2.1 get_form_datas()

  3. setup_forms()

  4. get_response()

get_context ( *args, **kwargs )

filter_hook

Context Params:

form : Form 对象

original : 要修改的原始数据对象

show_delete : 是否显示删除项

add : 是否是添加数据

change : 是否是修改数据

errors : Form 错误信息

get_error_list ( *args, **kwargs )

filter_hook

获取表单的错误信息列表。

get_field_attrs ( *args, **kwargs )

filter_hook

根据 DB Field 返回 Form Field 的属性,dict类型。

参数:db_field – Model 的 DB Field
get_field_style ( *args, **kwargs )

filter_hook

根据 Field Style 返回 Form Field 属性。扩展插件可以过滤该方法,提供各种不同的 Style

参数:
  • db_field – Model 的 DB Field
  • style – 配置的 Field Style,该值来自于属性 style_fields
get_form_helper ( *args, **kwargs )

filter_hook

取得 Crispy Form 需要的 FormHelper。具体信息可以参看 Crispy Form 文档

get_form_layout ( *args, **kwargs )

filter_hook

返回 Form Layout ,如果您设置了 form_layout 属性,则使用该属性,否则该方法会自动生成 Form Layout 。有关 Form Layout 的更多信息可以参看 Crispy Form 文档设置 Form Layout 可以非常灵活的显示表单页面的各个元素

get_media ( *args, **kwargs )

filter_hook

get_model_form ( *args, **kwargs )

filter_hook

根据 Model 返回 Form 类,用来显示表单。

get_readonly_fields ( *args, **kwargs )

filter_hook

返回只读字段,子类或 OptionClass 可以复写该方法

instance_forms ( *args, **kwargs )

filter_hook

实例化 Form 对象,即使用 get_form_datas() 返回的值初始化 Form,实例化的 Form 对象赋值为 form_obj 属性

post ( *args, **kwargs )

filter_hook

保存表单数据。具体的程序执行流程为:

prepare_form ( *args, **kwargs )

filter_hook

准备 Form,即调用 get_model_form() 获取 form ,然后赋值给 model_form 属性

save_forms ( *args, **kwargs )

filter_hook

保存表单,赋值为 new_obj 属性,这时该对象还没有保存到数据库中,也没有 pk 生成

save_models ( *args, **kwargs )

filter_hook

保存数据到数据库中

save_related ( *args, **kwargs )

filter_hook

保存关联数据

setup_forms ( )

配置 Form。主要是

valid_forms ( *args, **kwargs )

filter_hook

验证 Form 的数据合法性

class xadmin.views. CreateAdminView ( request, *args, **kwargs )

创建数据的 ModeAdminView 继承自 ModelFormAdminView ,用于创建数据。

get_context ( *args, **kwargs )

filter_hook

Context Params:

title : 表单标题
get_form_datas ( *args, **kwargs )

filter_hook

从 Request 中返回 Form 的初始化数据

get_response ( *args, **kwargs )

filter_hook

返回显示表单页面的 Response ,子类或是 OptionClass 可以复写该方法

post_response ( *args, **kwargs )

filter_hook

当成功保存数据后,会调用该方法返回 HttpResponse 或跳转地址

class xadmin.views. UpdateAdminView ( request, *args, **kwargs )

修改数据的 ModeAdminView 继承自 ModelFormAdminView ,用于修改数据。

get_context ( *args, **kwargs )

filter_hook

Context Params:

title : 表单标题

object_id : 修改的数据对象的 id

get_form_datas ( *args, **kwargs )

filter_hook

获取 Form 数据

get_response ( *args, **kwargs )

filter_hook

post_response ( *args, **kwargs )

filter_hook

当成功修改数据后,会调用该方法返回 HttpResponse 或跳转地址

class xadmin.views. DeleteAdminView ( request, *args, **kwargs )

删除 Model 的 AdminView。主要用于删除数据

Option属性

delete_confirmation_template = None

删除时确认删除页面的模板名称

实例属性

obj

即将被删除的对象

delete_model ( *args, **kwargs )

filter_hook

删除 self.obj

get ( *args, **kwargs )

filter_hook

get_context ( *args, **kwargs )

filter_hook

Context Params:

title : 确认删除的标题,如果您没有权限删除的话,会提示无法删除

object : 要被删除的对象

deleted_objects : 关联被删除的所有数据对象

perms_lacking : 缺少的权限

protected : 被保护的数据,无法被删除的数据对象

init_request ( object_id, *args, **kwargs )

初始化操作。根据传入的 object_id 取得要被删除的数据对象,而后进行权限判断

post ( *args, **kwargs )

filter_hook

post_response ( *args, **kwargs )

filter_hook

删除成功后的操作。首先提示用户信息,而后根据用户权限做跳转,如果用户有列表产看权限就跳转到列表页面,否则跳到网站首页。

class xadmin.views. DetailAdminView ( request, *args, **kwargs )

显示 Model 详细信息的 AdminView. 该 View 页面只能用来查看数据内容, 不能用来修改数据.该 View 显示各字段的布局跟 xadmin.views.edit.ModelFormAdminView 一致.

Option属性

detail_layout = None

详情页面的 Layout 对象,是一个标准的 Crispy Form Layout 对象。使用 Layout 可以方便的定义整个页面的结构。

detail_show_all = True

是否显示所有字段的内容, 默认为 True . 如果为 True 则会显示 Layout 中没有列出的字段, 否则会隐藏这些字段

detail_template = None

详情页面的模板文件

实例属性

obj

即将被删除的对象

get ( *args, **kwargs )

filter_hook

get_context ( *args, **kwargs )

filter_hook

Context Params :

form : 用于显示数据的 Form 对象

object : 要显示的 Model 对象

get_field_result ( *args, **kwargs )

filter_hook

返回包含该字段内容的 ResultField 实例.

get_form_helper ( *args, **kwargs )

filter_hook

取得 Crispy Form 需要的 FormHelper。具体信息可以参看 Crispy Form 文档

get_form_layout ( *args, **kwargs )

filter_hook

返回 Form Layout ,如果您设置了 detail_layout 属性,则使用 form_layout 属性,如果都没有该方法会自动生成 Form Layout 。有关 Form Layout 的更多信息可以参看 Crispy Form 文档设置 Form Layout 可以非常灵活的显示页面的各个元素

get_media ( *args, **kwargs )

filter_hook

返回列表页面的 Media, 该页面添加了 form.css 文件

get_model_form ( *args, **kwargs )

filter_hook

根据 Model 返回 Form 类,用来显示表单。

get_response ( *args, **kwargs )

filter_hook

返回 HttpResponse , 插件可以复写该方法返回特定的 HttpResponse

init_request ( object_id, *args, **kwargs )

初始化操作。根据传入的 object_id 取得要被显示的数据对象,而后进行权限判断, 如果没有数据查看权限会显示禁止页面.





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值