怎么做自己网站,怎么分享网站,不同类型的网站,广州网站建设优化公司python web项目中经常会使用到脚本#xff0c;一般来说有两种很简单的方法#xff0c;一种是直接python function#xff0c;另一种就是 django 自定义command。 对比常规脚本
这里举个简单的例子#xff0c;比如初始化数据、文件名称为initialize_data.py
#xff08;1…
python web项目中经常会使用到脚本一般来说有两种很简单的方法一种是直接python function另一种就是 django 自定义command。 对比常规脚本
这里举个简单的例子比如初始化数据、文件名称为initialize_data.py
1使用方式1
from django.utils import timezone
from your_app.models import Your_modeldef initialize_data():unit_data [{name: Tom,age: 12,},{name: Jerry,age: 23,}]Your_model.objects.bulk_create(Your_model(**data))# 调用初始化函数
initialize_data()
2使用方式2web开发推荐用BaseCommand使用from django.core.management.base import BaseCommand可以创建一个自定义的Django管理命令以便更好地组织和管理脚本
from django.core.management.base import BaseCommand
from django.utils import timezone
from your_app.models import Your_modelclass Command(BaseCommand):help Initialize datadef handle(self, *args, **options):unit_data [{name: Tom,age: 12,},{name: Jerry,age: 23,}]Your_model.objects.bulk_create(Your_model(**data))通过继承BaseCommand类并实现handle方法我们可以将脚本逻辑放在handle方法中。然后我们可以在命令行中运行python manage.py initialize_data来执行该命令。 优势
更好的组织和管理使用BaseCommand可以将脚本逻辑封装为一个自定义的Django管理命令使代码更加模块化和可维护。支持命令行参数BaseCommand提供了处理命令行参数的功能可以通过命令行传递参数给脚本。集成Django环境使用BaseCommand可以直接访问Django的模型和其他功能无需额外的配置。
劣势
需要创建一个管理命令相比直接运行脚本文件使用BaseCommand需要创建一个自定义的管理命令并在命令行中运行该命令。 命令行参数
这里讲一下命令行参数。
注Command类名是用于自定义管理命令的约定但你可以选择其他名称只需确保继承自BaseCommand类即可 from django.core.management.base import BaseCommand
from your_app.models import YourModelclass Command(BaseCommand):help Initialize datadef add_arguments(self, parser):parser.add_argument(--name, typestr, helpSet name value)parser.add_argument(--age, typeint, helpSet age value)def handle(self, *args, **options):name options[name]age options[age]if name and age:YourModel.objects.create(namename, ageage)else:self.stdout.write(self.style.ERROR(Please provide both name and age values.))运行以下指令即可创建
python manage.py initialize_data --name Tom --age 1 使用add_arguments方法来定义命令行参数。在这个示例中添加了--name和--age两个参数分别用于设置name和age的值并提供了帮助文本。在handle方法中我们通过options[name]和options[age]来获取命令行参数的值并根据这些值创建YourModel实例。 其他
在执行脚本时往往要注意安全性、可拓展性。 1安全性如批量修改、多表修改信息这时候需要加事务保障数据安全同时注意异常捕获打印日志检查 2可拓展性编写脚本往往我们还希望做到后续可拓展可用命令行参数就可以实现这个性质。 文章转载自: http://www.morning.rjrz.cn.gov.cn.rjrz.cn http://www.morning.lhgqc.cn.gov.cn.lhgqc.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.qttft.cn.gov.cn.qttft.cn http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.jwbfj.cn.gov.cn.jwbfj.cn http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn http://www.morning.dwxqf.cn.gov.cn.dwxqf.cn http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.thzwj.cn.gov.cn.thzwj.cn http://www.morning.qljxm.cn.gov.cn.qljxm.cn http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.hksxq.cn.gov.cn.hksxq.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.cytr.cn.gov.cn.cytr.cn http://www.morning.sfwd.cn.gov.cn.sfwd.cn http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.lflnb.cn.gov.cn.lflnb.cn http://www.morning.ydrn.cn.gov.cn.ydrn.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.skkmz.cn.gov.cn.skkmz.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.gkjyg.cn.gov.cn.gkjyg.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.dnjwm.cn.gov.cn.dnjwm.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.bzlgb.cn.gov.cn.bzlgb.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn http://www.morning.ljbch.cn.gov.cn.ljbch.cn http://www.morning.zttjs.cn.gov.cn.zttjs.cn http://www.morning.qcwrm.cn.gov.cn.qcwrm.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.kqzxk.cn.gov.cn.kqzxk.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.pngdc.cn.gov.cn.pngdc.cn http://www.morning.fgsct.cn.gov.cn.fgsct.cn http://www.morning.lxmmx.cn.gov.cn.lxmmx.cn http://www.morning.dbjyb.cn.gov.cn.dbjyb.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn http://www.morning.bnfjh.cn.gov.cn.bnfjh.cn http://www.morning.qgghr.cn.gov.cn.qgghr.cn http://www.morning.tpxgm.cn.gov.cn.tpxgm.cn http://www.morning.rcttz.cn.gov.cn.rcttz.cn http://www.morning.mksny.cn.gov.cn.mksny.cn http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn http://www.morning.mfrb.cn.gov.cn.mfrb.cn http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.kmprl.cn.gov.cn.kmprl.cn http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn http://www.morning.ykqbs.cn.gov.cn.ykqbs.cn http://www.morning.djxnn.cn.gov.cn.djxnn.cn http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.hdzty.cn.gov.cn.hdzty.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.ejknty.cn.gov.cn.ejknty.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.lwygd.cn.gov.cn.lwygd.cn http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn http://www.morning.nzcys.cn.gov.cn.nzcys.cn