0%

使用Django遇到的问题

Django的使用

一、基本配置

数据库初始化

model里定义数据库模型,需要先初始化数据库:
python manage.py makemigrations
python manage.py migrate

然后在admin.py中进行注册

修改菜单名

在apps.py中修改项目名

from django.apps import AppConfigclass 

App01Config(AppConfig):    
    name = 'XXX'
    verbose_name = 'XXX管理系统'

在models.py中表模型中添加Meta元标签:

class Meta:        
    verbose_name = 'XXX'
    verbose_name_plural = verbose_name

触发器

1
2
3
4
5
@receiver(op, sender=Model)
def function():
    pass

op = pre_save/post_save/pre_delete/post_delete

实例Model被增删前后,触发执行函数function,比如从A表删除一条记录,B表中也要随之删除。

二、SimpleUI

自定义菜单

SIMPLEUI_CONFIG = {
    # 是否使用系统默认菜单,自定义菜单时建议关闭。
    'system_keep': False,

    # 用于菜单排序和过滤, 不填此字段为默认排序和全部显示。空列表[] 为全部不显示.
    'menu_display': ['发票管理','权限管理'],

    # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时刷新展示菜单内容
    'dynamic': False,
    'menus': [
        {
            'app': 'manager',
            'name': '发票管理',
            'icon': 'fa fa-user-md',
            'models': [
                {
                    'name': '发票列表',
                    # app名/model里定义的数据模型/。
                    'url': 'manager/invoice/',
                    'icon': 'fa fa-user'
                },
            ]
        },

            {
            'app': 'auth',
            'name': '权限管理',
            'icon': 'fas fa-user-shield',
            'models': [
                {
                    'name': '管理用户列表',
                    'icon': 'fa fa-user-secret',
                    'url': 'auth/user/'
                },
                {
                    'name': '用户组',
                    'icon': 'fa fa-th-list',
                    'url': 'auth/group/'
                }
            ]
        },
    ]
}

注意踩坑,url里要用小写。。。。。。

Tip1

自定义菜单里的url写全(IP那种),映射到view中的请求即可注册到菜单中,

就不需要全都要用admin的model去映射。

不过扩展的新应用app需要在INSTALLED_APPS这里面注册

Tip2

三、QuerySet

1、all()

tt = Model.objects.all()

返回所有的Model的实例及其字段值,相当于SQL的:
SELECT * FROM Model

2、values()

tt = Model.objects.values('id', 'username')  

tt = Model.objects.values_list('id', 'username')

返回所有的Model的实例及其指定字段值,相当于SQL的:
SELECT id, username FROM Model

当只需要获取一个属性的值时,可以通过制定flat=True来获得:
tt = Model.objects.values_list(‘username’, flat=True)

相当于SQL的:
SELECT username FROM Model

3、filter()

tt = Model.objects.filter(username = "xx")

相当于SQL的:
SELECT * FROM Model where username = “xx”

4、get()

obj= Model .objects.get(username =‘xx’)

上述所有函数除了get方法,返回的结果全是QuerySet, 可用for循环取出来即可

django的models模块查询方法 - 稀里糊涂林老冷 - 博客园

------------- Thank you for reading -------------

Title - Artist
0:00