python_django_admin
admin 是Django提供的基于web的管理工具,是系统管理员用于数据的输入,删除和查询的管理工具。
超级管理员在settings中的集成:INSTALLED_APPS=['django.contrib.admin']
1.创建超级用户:python manage.py createsuperuser
2.浏览器登录用户
3.添加自己的数据模型
from django.db import models class Grade(models.Model): gradeid = models.CharField(max_length=20) g_name = models.CharField(max_length=15) def __str__(self): # 在Django管理中userModel object显示为姓名 return self.g_name class Student(models.Model): s_name = models.CharField(max_length=20) s_age = models.IntegerField() s_sex = models.BooleanField(default=True) # 默认为男 s_gradeid = models.ForeignKey(Grade, on_delete=models.CASCADE) def __str__(self): return self.s_name
在admin中注册需要管理的数据库表:
from myapp.models import Student, Grade admin.site.register([Student, Grade])
效果:
设置界面为中文:(在settings.py中修改配置如下)
# LANGUAGE_CODE = 'en-us' # # TIME_ZONE = 'UTC' LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/shanghai' USE_I18N = True USE_L10N = True # USE_TZ = True USE_TZ = False # 关闭时区
4.添加自己的管理类(在admin.py中定义类):
from django.contrib import admin from myapp.models import Student, Grade # 添加自己的管理类 class StudentAdmin(admin.ModelAdmin): def sex(self): # 对性别的true/false进行处理 if self.s_sex: return '男' else: return '女' sex.short_description = '性别' # 设置显示标题 list_display = 's_name', sex # 在student页显示表,s_name/s_gradeid分别为models中的字段 search_fields = 's_name', 's_age' # 可搜索的字段名 list_filter = 's_name', 's_age' # 过滤字段 list_per_page = 2 # 分页,每页显示多少条数据 fieldsets = ( ('基本信息', {'fields': ('s_name', 's_age')}), # fields :显示的字段 ('可选信息', {'fields': ('s_gradeid', 's_sex')}) # exclude:不显示的字段 ) admin.site.register(Student, StudentAdmin) # 注册
效果1:student的显示
效果2:显示方式
5.admin中的级联
from django.contrib import admin from myapp.models import Student, Grade class StudentInfo(admin.TabularInline): extra = 3 # 创建的基础条数 model = Student # 连接的表 class GradeAdmin(admin.ModelAdmin): inlines = [StudentInfo] admin.site.register(Grade, GradeAdmin)
效果:
6.修改Django管理的HTML页面
- 重写django中的HTML的页面
- 运用第三方的admin,如xadmin、Django suit等(https://github.com/vinta/awesome-python#admin-panels)