zoukankan      html  css  js  c++  java
  • Django之admin管理工具

      一、基本设置

      1,应用注册

      若要把app应用显示在后台管理中,需要在admin.py中注册。有两种方式注册

      1.1 方式一:

    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    class BlogAdmin(admin.ModelAdmin):
        list_display=('id', 'caption', 'author', 'publish_time')
         
    #在admin中注册绑定
    admin.site.register(Blog, BlogAdmin)

      1.2 方式二:用装饰器

    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    @admin.register(Blog)
    class BlogAdmin(admin.ModelAdmin):
        list_display=('id', 'caption', 'author', 'publish_time')

      2,admin界面汉化

      默认admin后台管理界面是英文的,可以在settings.py中设置:

      LANGUAGE_CODE='zh-hans'

      TIME_ZONE='Asia/Shanghai'

      二、记录列表界面设置

      1,记录列表基本设置

    from django.contrib import admin
    from app01.models import Book
    from django.utils.safestring import mark_safe
    #Blog模型的管理器 @admin.register(Book) class BookAdmin(admin.ModelAdmin):
      def _



      def authors(self,obj):
        return ','.join([obj_author for obj_author in obj.author.all()])
    #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键) list_display = ('name', 'publish', 'authors', 'pub_date','price') #list_per_page设置每页显示多少条记录,默认是100条 list_per_page = 50 #ordering设置默认排序字段,负号表示降序排序 ordering = ('-price',) #list_editable 设置默认可编辑字段 list_editable = ['price'] #fk_fields 设置显示外键字段 fk_fields = ('machine_room_id',)
      #设置哪些字段可以点击进入编辑界面 list_display_links = ('name', 'pub_date')
      #筛选器 list_filter =('publish', 'author', ) #过滤器 search_fields =('name', 'net', 'mark') #搜索字段 date_hierarchy = 'go_time' # 详细时间分层筛选 
      
      #链表查询是否自动select_related
      list_select_related

      #action,定制action中的操作(批量操作)
      def func(self,request,queryset):
        queryset.update(price=100)
      func.short_description='批量初始化'
      actions=[func,]

      #定制HTML模板
      add_form_template=None
      change_form_template=None
      change_list_template=None
      delete_confirmation_template=None
      delete_selected_confirmation_template=None
      object_history_template=None

       三、admin源码解读

      1,启动所有app的admin.py文件

    def autodiscover():
        autodiscover_modules('admin', register_to=site)

      2,注册模型类

    class BookAdmin(admin.ModelAdmin):      #自定义的配置类
        list_display = ("title",'publishDate', 'price')
    
    admin.site.register(Book, BookAdmin) 
    admin.site.register(Publish)

      执行register方法:

    class ModelAdmin:        #配置类
      
    pass
    class
    AdminSite: def __init__(self): self._registry = {} def register(self, model, admin_class=None, **options): admin_class = admin_class or ModelAdmin self._registry[model] = admin_class(model)
    site=AdminSite()

      注册完模型类之后,只是完成了在_registry字典里加了键值对,以模型类为键,配置类对象为值,如现在:

    得到的值:
    _registry={Book:BookAdmin(Book),Publish:ModelAdmin(Publish)}
    至此,注册环节完成

      3,admin的url配置

    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    class ModelAdmin():
        @property
        def urls(self):
            return self.get_urls(), None, None
         def get_urls(self):
            temp=[
                path('',self.list_view),
                path('add/',self.add_view),
                re_path('(d+)/delete/',self.delete_view),
                re_path('(d+)/edit/',self.edit_view),
            ]
            return temp
        
    class AdminSite:
        @property
        def urls(self):
            return self.get_urls(), 'admin', self.name
        def get_urls(self):
            temp=[]
            for model,config_obj in self._registry.items():
                model_name = model._meta.model_name
                app_label = model._meta.app_label
                temp.append(path('%s/%s/'%(app_label,model_name),config_obj.urls))
            return temp

      这就完成了url的二级分发

  • 相关阅读:
    36_Cache Aside Pattern缓存+数据库读写模式的分析
    35_亿级流量商品详情页的多级缓存架构以及架构中每一层的意义
    34_redis阶段性总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用
    33_redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)
    正则表达式全部符号解释
    如何正确学习JavaScript
    2015阿里校招前端笔试题
    前端面试总结2
    前端面试总结
    通俗易懂的来讲讲DOM
  • 原文地址:https://www.cnblogs.com/12345huangchun/p/10269437.html
Copyright © 2011-2022 走看看