记录下:docker安装报错: Problem: problem with installed package containers-common-2:1-2.module_el8.5.0+890+6b136101.noarch
使用 yum install -y docker-ce 安装docker报错
报错如下:
playwright获取图片base64时出现js报错:Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported
出现这个报错的原因是:由于浏览器的安全考虑,如果在使用canvas绘图的过程中,使用到了外域的图片资源,那么在toDataURL()时会抛出安全异常。
解决办法:设置图片属性:crossOrigin为anonymous
img.setAttribute('crossOrigin', 'anonymous');
Django如何为modals指定数据库
在开发中会遇到需要对数据模型(Modal)指定数据库的情况,去官方的文档看了看,然而并不可以在使用数据模型时指定数据库。并且只能使用默认的‘default’库。可是我的业务使用的表不在默认库中,并还要是用数据模型,这可咋整,继续看官方文档得到一些有用的信息:虽然不可以简单的设置,但可以使用数据库路由
数据库路由器是一个类,最多提供四种方法:
db_for_read(model, **hints)
db_for_write(model, **hints)
allow_relation(obj1, obj2, **hints)
allow_migrate(db, app_label, model_name=None, **hints)
首先在 app项目下创建与modals同级的py文件:名字任意,我这里使用dbrouter.py
定义一个类(这个类就是数据库路由类,同样名字任意,我这里还Dbrouter)
# app/dbrouters.py
from app.models import MyModel #这个就是需要指定数据库的数据模型
class Dbrouter(object):
def db_for_read(self, model, **hints): #从数据库中读取
""" reading SomeModel from otherdb """
if model == MyModel : # 关键点1
return 'teacher' # 关键点2在setting中设置的key
return None
def db_for_write(self, model, **hints): #写入数据库时
""" writing SomeModel to otherdb """
if model == MyModel : # 关键点1
return 'teacher' # 关键点2,在setting中设置的key
return None
接下来在setting中设置要指定其他数据库的配置:在DATABASE字典中添加如下配置
'teacher': { #库的别名
'ENGINE': 'django.db.backends.mysql',
'HOST':'',
'PORT':3306,
'NAME': '', #mysql数据库的名字
'USER':'teacher',
'PASSWORD':'',
}
然而并没有结束,还需要在设置一项:(在setting中添加如下)
DATABASE_ROUTERS = ('app.dbrouters.Dbrouter',)
至此大功告成,其实还算简单~!