天天看點

(中)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'):