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

    一、admin app

    Django 提供了基于 web 的管理工具。

    Django 自动管理工具是 django.contrib 的一部分,可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]

    django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

    二、激活管理工具

    通常我们在生成项目时会在 urls.py 中自动设置好

    from django.conf.urls import url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]

    三、使用admin管理工具

    首先先启动我们的Django项目,然后在浏览器中访问 http://127.0.0.1:8000/admin/,就能看到登陆界面。(具体网址和端口根据自己环境输入)

    使用 python manage.py createsuperuser 来创建管理员账号,来登录admin管理后台。

    想要在admin 界面管理某个数据模型(model),需要先将该数据模型(model)注册到 admin。

    四、admin的定制

    只要按照下面的方式将某个模型类注册,即可在Admin中实现增删改查的功能:

    # admin.py
    
    from django.contrib import admin
    from 应用名 import models
    
    admin.site.register(models.Publisher)
    admin.site.register(models.Book)
    admin.site.register(models.Author)

    但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:

    # 方式一
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
    admin.site.register(models.Book, BookAdmin)
    
    # 方式二
    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")

    ModelAdmin支持的定制功能

    ModelAdmin中提供了大量的可定制功能,如:

    1. list_display,列表时,定制显示的列。

    from django.utils.safestring import mark_safe
    
    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "delete")
    
        def delete(self, obj):
            return mark_safe("<a href='#'>删除</a>")

    2. list_display_links,列表时,定制列可以点击跳转。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_display_links = ("price",)

    3. list_filter,列表时,定制右侧快速筛选。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_filter = ("title", "price", "publisher")

    4. list_select_related,列表时,连表查询是否自动 select_related。

    5. list_editable,列表时,可以编辑的列 。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_editable = ("price",)

    6. search_fields,列表时,模糊搜索的功能。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        search_fields = ("title", "publisher")

    7. date_hierarchy,列表时,对Date和DateTime类型进行搜索。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "publishDate")
        date_hierarchy = "publishDate"

    8. inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除。

    9. action,列表时,定制action中的操作。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "publishDate")
    
        # 定制Action行为具体方法
        def func(self, request, queryset):
            print(self, request, queryset)
            queryset.update(price=100)
        
        func.short_description = "初始化价格"
        actions = [func,]
    
        # Action选项都是在页面上方显示
        actions_on_top = True
        # Action选项都是在页面下方显示
        actions_on_bottom = False
    
        # 是否显示选择个数
        actions_selection_counter = True

    分隔


    10. 定制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
  • 相关阅读:
    十三 web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
    十二 web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
    十一 web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
    十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
    九 web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解
    八 web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
    七 web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理
    六 web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求
    五 web爬虫,scrapy模块,解决重复ur——自动递归url
    四 web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
  • 原文地址:https://www.cnblogs.com/believepd/p/9962585.html
Copyright © 2011-2022 走看看