django日常记录

1 使用反向工程(前置条件:django项目中setting文件的数据库已经配置好。没有执行过迁移命令)

第一步必须是python manage.py inspectdb

第二步是 python manage.py inspectdb > app/models.py

反向工程后的manytomany的字段,需手动自己建一张表,外键也要自己提前想好,在模型中建立,然后手动在models中添加就行了。models中没有自动添加外键的功能,只能手动进去加

两步都不能少

2 model里面的choice:

STATUS_CHOICE = (
    (0, '未执行'),
    (1, '已执行')
)
name = models.CharField(max_length=255, blank=True, null=True, verbose_name='监控名称')
excute_time = models.DateTimeField(blank=True, null=True, verbose_name='执行时间')
last_excute_time = models.DateTimeField(blank=True, null=True, verbose_name='最后执行时间')
status = models.CharField(STATUS_CHOICE , max_length=255,default=0 , verbose_name='状态')
createtime = models.DateTimeField(blank=True, null=True, verbose_name='创造时间')

3 自定义xadmin的主页

先在setting里面注册,然后在新建一个adminx.py的文件,进行注册所对应的model。

4 日志文件的输出:

新建一个文件或者是在setting里面进行配置。

rq = time.strftime('%Y%m%d', time.localtime(time.time()))
BASE_LOG_DIR = os.path.join(BASE_DIR, "logs")
LOGGING = {
    'version': 1,  # 保留字
    'disable_existing_loggers': False,  # 禁用已经存在的logger实例
    # 日志文件的格式
    'formatters': {
        # 详细的日志格式
        'standard': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]''[%(levelname)s][%(message)s]'
        },
        # 简单的日志格式
        'simple': {
            'format': '[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]%(message)s'
        },
    },
    # 过滤器
    'filters': {
    },
    # 处理器
    'handlers': {
        # 日志等级CRITICAL > ERROR > WARNING > INFO > DEBUG
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler', #原生的sql语句会打印至日志,会导致文件很大。所以最好注释掉
            'stream' : 'ext://sys.stdout',
            # 文件重定向的配置,将打印到控制台的信息都重定向出去 python manage.py runserver >> /home/aea/log/test.log
             'formatter': 'standard'
             # 制定输出的格式,注意 在上面的formatters配置里面选择一个,否则会报错
             },
         'file': {
             'level': 'DEBUG',
             'class': 'logging.FileHandler',
             'filename': os.path.join(BASE_LOG_DIR, f"{rq}_info.log"),
             #这是将普通日志写入到日志文件中的方法,
              'formatter': 'standard' },

        # 默认的
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, f"{rq}_info.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 3,  # 最多备份几个
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门用来记错误日志
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, f"{rq}_err.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            # 这里直接输出到控制台只是请求的路由等系统console,当使用重定向之后会把所有内容输出到log日志
            'level': 'DEBUG', 'propagate': True, },

        'django.request ': {
            'handlers': ['console', 'file'],
            'level': 'WARNING',
             # 配合上面的将警告log写入到另外一个文件 'propagate': True,
            },
       # 默认的logger
        '': {
            'handlers': ['default', 'error'],
            'level': 'DEBUG',
            'propagate': True,  # 向不向更高级别的logger传递
        },
    },
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值