• Django: 后台常用操作


    指定状态码

    return JsonResponse(data, status=201)
    

    image-20210718183451044.png

    Djano删除数据库

    删除对应数据库后,删除对应文件

    image-20210720201435427.png
    删除对应的记录

    image-20210720202023925.png

    Django后台管理

    创建超级管理员

    python manage.py createsuperuser

    在后台中管理数据模型

    # admin.py
    from django.contrib import admin
    
    from JiLian.models import UserModel, Address
    
    admin.site.register(UserModel)
    admin.site.register(Address)
    

    image-20210722161807192.png

    在后台中查看数据

    class UserModel(models.Model):
        u_name = models.CharField(max_length=16, unique=True)
        u_password = models.CharField(max_length=256)
        
        # 以下代码,可以在后台中看到数据
        def __str__(self):
            return self.u_name
    
    class Address(models.Model):
        a_address = models.CharField(max_length=128)
    
        a_user = models.ForeignKey(UserModel, on_delete=models.CASCADE, null=True, blank=True, related_name='address_list')
        
        def __str__(self):
            return self.a_address
    

    image-20210722162158466.png

    个性化站点管理

    若感觉默认的站点样式不能满足应用需求,则可以通过继承Django定义的管理员数据模型,模板,站点类来开发出个性化的管理员站点。注册的时候添加自己的管理类

    # admin.py
    # 创建管理类
    class StudentAdmin(admin.ModelAdmin):
        # 规则
        pass
        
    # 注册管理类
    admin.site.register(Students,StudentAdmin) 
    
    #显示规则
    list_display 显示字段
    list_filter 过滤字段
    search_fields 搜索字段
    list_per_page 分页,每页多少条数据
    orderng 排序规则
    分组显示
    fieldsets = (
        ('班级', {fields:('sgrade')}),
        ('姓名',{fields:('sname')}),
    )
    
    # 修改规则
    fields  显示字段
    exclude  不显示的字段
    

    筛选字段

    class UserAdmin(admin.ModelAdmin):
         # 筛选字段
        list_filter = 'u_name', 'u_password'
    
    admin.site.register(UserModel, UserAdmin)
    

    tempsnip.png

    搜索字段

    class UserAdmin(admin.ModelAdmin):
        # list_display 显示字段
        list_filter = 'u_name', 'u_password'
        # 搜索字段
        search_fields = 'u_name',
        pass
    ​
    admin.site.register(UserModel, UserAdmin)
    

    tempsnip-1626943831676.png

    自定义显示字段

    class UserAdmin(admin.ModelAdmin):
        # list_display 显示字段
        list_display = 'u_name', 'u_password'
        # 筛选字段
        list_filter = 'u_name', 'u_password'
        # 搜索字段
        search_fields = 'u_name',
        pass
    ​
    admin.site.register(UserModel, UserAdmin)
    

    tempsnip-1626944172596.png

    分页显示

    class UserAdmin(admin.ModelAdmin):
        # list_display 显示字段
        list_display = 'u_name', 'u_password'
        # 筛选字段
        list_filter = 'u_name', 'u_password'
        # 搜索字段
        search_fields = 'u_name',
        # 每页显示三条
        list_per_page = 3
        pass
    ​
    admin.site.register(UserModel, UserAdmin)
    

    tempsnip-1626944732699.png

    分组显示

    class StudentAdmin(admin.ModelAdmin):
    ​
        def sex(self):
            if self.s_sex:
                return '男'
            else:
                return '女'
    ​
        sex.short_description = '性别'
        list_display = 's_name', 's_age', sex
        # 分组显示
        fieldsets = (
            ('基本信息', {'fields': ('s_name', 's_age', 's_sex')}),
            ('可选信息', {'fields': ('s_height', 's_weight')}),
        )
    admin.site.register(Student, StudentAdmin)
    

    tempsnip-1626964590856.png

    级联显示

    class StudentInfo(admin.TabularInline):
        extra = 3
        model = Student
    ​
    class GradeAdmin(admin.ModelAdmin):
        list_display = 'g_name', 'g_postion'
        inlines = [StudentInfo]
    

    image-20210722233657292.png

    自定义后台管理模板

    覆盖系统模板的方式,在django/contrib/admin/templates/admin中,将需要重新定制的文件复制出来,在自己的工程中创建相对应的子目录,在settings.py中注入模板路径,子模板继承子复制的模板添加自己的代码。

    自定义登录页面

    原始文件路径:

    E:WorkSpacepython_xnhjHelloRestLibsite-packagesdjangocontribadmin	emplatesadminlogin.html
    

    templates文件夹中新建adminlogin.html

    Django后台模板

    https://github.com/vinta/awesome-python#admin-panels

    博观而约取,厚积而薄发
  • 相关阅读:
    When root grant all privileges to new user in mysql and report error 'Root is not allowed to grant privileges on a MySQL database'
    C++ mysql print all rows all columns data in Ubuntu
    Redis 在项目中使用Redis
    Java应用1文件流的读和写
    Java应用2POI之操作Excel
    腾讯云发布高性能播放器SDK:提供腾讯视频同款内核,启播时长低至100ms
    在有限高度容器内使 动态输入框自动滚动到视野内
    小程序在开发者工具、真机测试时好好的,体验版 页面空白无法通过审核
    elementui form 表单字段报错错误原因分析
    docker部署rocketmq
  • 原文地址:https://www.cnblogs.com/leoych/p/15339623.html
Copyright © 2020-2023  润新知