django的admin模块

django的admin模块

 前言


  网站管理平台是绝大多数应用服务必备的功能,admin 是django自带的一个网站管理平台,它的主要功能就是对数据库的数据进行增上改查的操作。admin网站管理平台只有管理员才能访问。

 目录

 基本使用

 初始化数据库

python manage.py migrate

 创建超级管理员

python manage.py createsuperuser


  按提示输入用户名、邮箱(可以为空)、密码、确认密码

 设置语言,修改setting.py配置

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_TZ = False

 访问admin管理平台


  访问的方法是直接在浏览器访问:http://localhost:8000/admin


  输入超级管理的账号和密码,就可以登录成功了


 admin模块的使用

 admin.py

from django.contrib import admin
from .models import Project


admin.site.site_header = "工程项目"
admin.site.site_title = "后台管理"


class ProjectAdmin(admin.ModelAdmin):
    list_display = ('project_name', "project_type", "project_version")


admin.site.register(Project, ProjectAdmin)

 样式设置

 样式设置

样式变量 说明 举例
list_display 可显示的数据库字段 list_display = ['id', 'username']
list_filter 右边栏过滤器 list_filter = ['username']
search_fields 搜索 search_fields = ['username']
ordering 排序 ordering = ['id'] # 反序 -id
list_per_page 每页显示的数据量 list_per_page = 10
readonly_fields 只读的字段 readonly_fields = ['username']
date_hierarchy 显示的时间分层,仅支持时间类型 date_hierarchy = '时间字段'
list_display_links 设置可编辑的字段 list_display_links = ['id', 'username']


 自定义字段

def times(self, obj):
    _time = time.localtime(obj.create_time)
    return time.strftime('%Y-%m-%d %H:%M:%S', _time)

# 自定义字段别名
times.short_description = 'xx'


 自定义HTML语言

from django.utils.html import format_html

def html_field(self, obj):
    return format_html('<a href="{}">跳转</a>', 'https://www.baidu.com')


 imageField的显示方法

from django.utils.safestring import mark_safe
def image_data(self, obj):
    return mark_safe(u'<img src="%s" width="100px">' % obj.image.url)


 二次开发

    # 获取数据的函数
    def get_queryset(self, request):
        result = super(UserAdmin, self).get_queryset(request)
        if request.user.superuser:
            return result
        else:
            return result.filter('xx')

    # 保存数据的函数
    def save_model(self, request, obj, form, change):
        if change:
            obj.image = 'https://www.baidu.com'
        else:
            obj.image = 'https://pypi.douban.com'
        super(UserAdmin, self).save_model(request, obj, form, change)

posted @ 2022-12-11 12:23  saiya6  阅读(42)  评论(0)    收藏  举报