django数据处理

django积累

连接数据库:

连接数据库 :
 1.创建数据库
    create database oa default charset utf8;
    
 2.Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually. ??

---》时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。 在mysql的命令模式下,输入:
set global time_zone='+8:00';

3.__init__.py导入pymysql
import pymysql
pymysql.install_as_MySQLdb()   #取代mysqldb

模板

#模板
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'oa',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123456',
        'CHARSET':'utf8'
    }
}


数据库迁移: 
	“生成迁移”和“执行迁移”来完成关系型数据库中二维表的创建

(venv)$ python manage.py makemigrations vote
...
(venv)$ python manage.py migrate

注意:为了给vote应用生成迁移文件,需要修改Django项目settings.py文件,在INSTALLED_APPS中添加vote应用

后台管理

使用Django提供的后台管理来添加学科和老师信息!!

1.创建超级用户:
	createsuperuser
2.注册模型类和模型管理类
	admin.site.register(models.Userinfo)
3.admin后台添加数据,修改数据。

功能扩展:

admin其他功能扩展
    list_display  		控制展示字段
    list_display_links  控制跳转字段
    search_fields       控制搜索框 多个字段是或的关系
    list_filter			通常只放外键字段
    actions				自定义批量操作的方法

    class BookConfig(admin.ModelAdmin):
        list_display = ['username','password','register_time','avatar']
        list_display_links = ['password']
        search_fields = ['username','password']
        list_filter = ['blog']

        def patch_init(self,request,queryset):
            print(queryset)  # <QuerySet [<Userinfo: tank>, <Userinfo: admin>, <Userinfo: oscar>, <Userinfo: jason>, <Userinfo: egon>]>

            patch_init.short_description = '批量更新'
            actions = [patch_init]

日志打印:

LOGGING = {
    'version': 1,
    # 是否禁用已经存在的日志器
    'disable_existing_loggers': False,
    # 日志格式化器
    'formatters': {
        'simple': {
            'format': '%(asctime)s %(module)s.%(funcName)s: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
        'verbose': {
            'format': '%(asctime)s %(levelname)s [%(process)d-%(threadName)s] '
                      '%(module)s.%(funcName)s line %(lineno)d: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        }
    },
    # 日志过滤器
    'filters': {
        # 只有在Django配置文件中DEBUG值为True时才起作用
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    # 日志处理器
    'handlers': {
        # 输出到控制台
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'formatter': 'simple',
        },
        # 输出到文件(每周切割一次)
        'file1': {
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': 'access.log',
            'when': 'W0',
            'backupCount': 12,
            'formatter': 'simple',
            'level': 'INFO',
        },
        # 输出到文件(每天切割一次)
        'file2': {
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': 'error.log',
            'when': 'D',
            'backupCount': 31,
            'formatter': 'verbose',
            'level': 'WARNING',
        },
    },
    # 日志器记录器
    'loggers': {
        'django': {
            # 需要使用的日志处理器
            'handlers': ['console', 'file1', 'file2'],
            # 是否向上传播日志信息
            'propagate': True,
            # 日志级别(不一定是最终的日志级别)
            'level': 'DEBUG',
        },
    }
}
原文地址:https://www.cnblogs.com/shaozheng/p/12025339.html