2024年3月

django setting
以下无效

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    )
}

正确用法
来自 https://blog.csdn.net/weixin_51098806/article/details/123674186#commentBox

MIDDLEWARE = [
    ...
    "projectname.utils.csrf_middleware.NotUseCsrfTokenMiddlewareMixin"
]

/project/project/utils

from django.utils.deprecation import MiddlewareMixin


class NotUseCsrfTokenMiddlewareMixin(MiddlewareMixin):

    def process_request(self, request):
        setattr(request, '_dont_enforce_csrf_checks', True)

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf 

添加一下内容

[Service] 
Environment="HTTP_PROXY=http://X.X.X.X:80" 
Environment="HTTPS_PROXY=http://X.X.X.X:443"

把x.x.x.x替换为代理服务器ip

重启docker

sudo systemctl daemon-reload 
sudo systemctl restart docker 

安装pymysql

pip install pymysql

django 配置

import pymysql
pymysql.install_as_MySQLdb()


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'name_of_the_database',
        'HOST': 'localhost',
        'USER': 'root',
        'PASSWORD': 'your_mysql_password',
        'PORT': '3306',  # MySQL 默认端口
        'OPTIONS': {
            'charset': 'utf8mb4',  # 设置字符集为 utf8mb4
           },
        }
}

错误用法

err := db.Transaction(func(tx *gorm.DB) error {
        tx = tx.Where("tid=?", req.Tid).Delete(Model{})
        if err := tx.Error; err != nil {
            common.LOGGER.Errorf("delete t fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        if tx.RowsAffected == 0 {
            return fmt.Errorf("操作失败,请检查任务状态")
        }

        err := tx.Where("tid=?", req.Tid).Delete(Result{}).Error
        if err != nil {
            common.LOGGER.Errorf("delete result fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        return nil
    })

正确用法

err := db.Transaction(func(tx *gorm.DB) error {
        result = tx.Where("tid=?", req.Tid).Delete(Model{})
        if err := result.Error; err != nil {
            common.LOGGER.Errorf("delete t fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        if result.RowsAffected == 0 {
            return fmt.Errorf("操作失败,请检查任务状态")
        }

        result = tx.Where("tid=?", req.Tid).Delete(Result{})
        if err := result.Error; err != nil {
            common.LOGGER.Errorf("delete result fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        return nil
    })