天天看点

(中)django-xadmin核心功能类视图结构(源码解读)

为什么会写这篇博客:

方便使用者对xadmin类视图的整体了解,只有了解了xadmin类视图整体结构,你才知道面对一个需求,应该在什么时间什么位置去改写代码。

比如你想修改详情页面字段的排版方式,那么如果你刚好知道class ModelFormAdminView(ModelAdminView)类下有个form_layout类属性和get_form_layout(self)函数,你就可以重新赋值form_layout类属性或者重写get_form_layout(self)函数来达到目的。

(中)django-xadmin核心功能类视图结构(源码解读)

class BaseAdminObject(object):

  • def get_view(self, view_class, option_class=None, *args, **kwargs):
  • def get_model_view(self, view_class, model, *args, **kwargs):
  • def get_admin_url(self, name, *args, **kwargs):
  • def get_model_url(self, model, name, *args, **kwargs):
  • def get_model_perm(self, model, name):
  • def has_model_perm(self, model, name, user=None):
  • def get_query_string(self, new_params=None, remove=None):
  • def get_form_params(self, new_params=None, remove=None):
  • def render_response(self, content, response_type='json'):
  • def template_response(self, template, context):
  • def message_user(self, message, level='info'):
  • def static(self, path):
  • def vendor(self, *tags):
  • def log(self, flag, message, obj=None):

class BaseAdminPlugin(BaseAdminObject):

  • def __init__(self, admin_view):
  • def init_request(self, *args, **kwargs):

class BaseAdminView(BaseAdminObject, View):

  • def __init__(self, request, *args, **kwargs):
  • def as_view(cls):
  • def init_request(self, *args, **kwargs):
  • def init_plugin(self, *args, **kwargs):
  • def get_context(self):
  • def media(self):
  • def get_media(self):

class CommAdminView(BaseAdminView):

  • def get_site_menu(self):
  • def get_nav_menu(self):
  • def get_context(self):
  • def get_model_icon(self, model):
  • def get_breadcrumb(self):

class ModelAdminView(CommAdminView):

  • def __init__(self, request, *args, **kwargs):
  • def get_context(self):
  • def get_breadcrumb(self):
  • def get_object(self, object_id):
  • def get_object_url(self, obj):
  • def model_admin_url(self, name, *args, **kwargs):
  • def get_model_perms(self):
  • def get_template_list(self, template_name):
  • def get_ordering(self):
  • def queryset(self):
  • def has_view_permission(self, obj=None):
  • def has_add_permission(self):
  • def has_change_permission(self, obj=None):
  • def has_delete_permission(self, obj=None):

class DeleteAdminView(ModelAdminView):

  • def init_request(self, object_id, *args, **kwargs):
  • def get(self, request, object_id):
  • def post(self, request, object_id):
  • def delete_model(self):
  • def get_context(self):
  • def get_breadcrumb(self):
  • def post_response(self):

class DetailAdminView(ModelAdminView):

  • def init_request(self, object_id, *args, **kwargs):
  • def get_form_layout(self):
  • def get_model_form(self, **kwargs):
  • def get_form_helper(self):
  • def get(self, request, *args, **kwargs):
  • def get_context(self):
  • def get_breadcrumb(self):
  • def get_media(self):
  • def get_field_result(self, field_name):
  • def get_response(self, *args, **kwargs):

class ModelFormAdminView(ModelAdminView):

  • def __init__(self, request, *args, **kwargs):
  • def formfield_for_dbfield(self, db_field, **kwargs):
  • def get_field_style(self, db_field, style, **kwargs):
  • def get_field_attrs(self, db_field, **kwargs):
  • def prepare_form(self):
  • def instance_forms(self):
  • def setup_forms(self):
  • def valid_forms(self):
  • def get_model_form(self, **kwargs):
  • def get_form_layout(self):
  • def get_form_helper(self):
  • def get_readonly_fields(self):
  • def save_forms(self):
  • def change_message(self):
  • def save_models(self):
  • def save_related(self):
  • def get(self, request, *args, **kwargs):
  • def post(self, request, *args, **kwargs):
  • def get_context(self):
  • def get_error_list(self):
  • def get_media(self):

class CreateAdminView(ModelFormAdminView):

  • def init_request(self, *args, **kwargs):
  • def get_form_datas(self):
  • def get_context(self):
  • def get_breadcrumb(self):
  • def get_response(self):
  • def post_response(self):

class UpdateAdminView(ModelFormAdminView):

  • def init_request(self, *args, **kwargs):
  • def get_form_datas(self):
  • def get_context(self):
  • def get_breadcrumb(self):
  • def get_response(self):
  • def post(self, request, *args, **kwargs):
  • def post_response(self):

class ListAdminView(ModelAdminView):

  • def init_request(self, *args, **kwargs):
  • def get_list_display(self):
  • def get_list_display_links(self):
  • def make_result_list(self):
  • def get_result_list(self):
  • def post_result_list(self):
  • def get_list_queryset(self):
  • def get_ordering_field(self, field_name):
  • def get_ordering(self):
  • def get_ordering_field_columns(self):
  • def get_check_field_url(self, f):
  • def get_model_method_fields(self):
  • def get_context(self):
  • def get_response(self, context, *args, **kwargs):
  • def get(self, request, *args, **kwargs):
  • def post_response(self, *args, **kwargs):
  • def post(self, request, *args, **kwargs):
  • def get_paginator(self):
  • def get_page_number(self, i):
  • def result_header(self, field_name, row):
  • def result_headers(self):
  • def result_item(self, obj, field_name, row):
  • def result_row(self, obj):
  • def results(self):
  • def url_for_result(self, result):
  • def get_media(self):
  • def block_pagination(self, context, nodes, page_type='normal'):