使用“dj{command\u name}”运行命令。使用简单配置文件中定义的别名或默认为django管理命令。

dj-command的Python项目详细描述


为什么?

如果通过pip安装,在每个项目的json文件(.dj-config.json)中定义了可爱的别名,将根据需要运行任意多个命令,如果找不到别名,则默认为django管理命令,则它在任何地方都可用。

命令可以按dj(例如dj makemigrations migrate)顺序运行。但是,调用长时间运行的进程(例如dj runserver)将阻止运行任何其他命令。例如,dj runserver migrate永远不会运行migrate命令,因为runserver将阻塞进程。

配置文件

示例.dj config.toml

disable_django_management_command=falsepython_interpreter="python"environment_file_path=".env"[[commands]]name="m"help="Does the migration dance"execute="./manage.py makemigrations && ./manage.py migrate"requires_virtualenv=true[[commands]]name="r"help="Runs all the servers"execute="./manage.py runserver"requires_virtualenv=truelong_running=true[[commands]]name="ls"help="Lists all the files, of course"execute="ls"[[commands]]name="up"help="Up all the things"execute="pip3 install -r requirements/development.txt && ./manage.py migrate && ./manage.py runserver"requires_virtualenv=truelong_running=true[[commands]]name="restore_database"help="Restores a Postgres database from live to local"execute="PGPASSWORD=$PGPASSWORD pg_dump $DATABASE_NAME --host=$DATABASE_HOST --port=$DATABASE_PORT --username=$DATABASE_USERNAME --format=tar | pg_restore --clean --dbname=$DATABASE_NAME --no-owner --host=localhost --port=5432"

配置文件位置

如果--config参数用于指定特定的文件位置,则这是dj查找配置文件的唯一位置。

否则,dj将搜索适当的配置文件并将它们“合并”在一起。这允许您在~/.dj-config.toml中有一个基本配置文件,但可以根据每个文件夹覆盖它。dj.toml配置文件优先于.json。因此,它将首先查找~/.dj-config.toml,如果它丢失了,则查找~/.dj-config.json。然后,它将遵循当前目录的相同模式。如果配置设置中存在重叠,则当前目录的配置文件将优先。

在命令中使用环境变量

dj将寻找一个.env文件来使用美妙的python-dotenv库加载环境变量。可以在execute命令中指定环境变量,就像在shell中一样(即$VARIABLE_NAME)。

基本参数和选项

  • dj --help查看所有选项
  • dj --list查看所有可用的自定义命令
  • dj {command_name}运行自定义命令或django管理命令(例如dj migrate
  • dj {command_name} {command_name} {command_name}运行多个命令(例如dj makemigrations migrate
  • dj {command_name} --dry_run显示在没有实际执行命令的情况下运行的命令

如何处理源代码

  1. 复制回购协议
  2. 在本地运行源:poetry run python dj
  3. 测试源:poetry run pytest
  4. 本地生成并安装:poetry build && pip3 install --user --force-reinstall .
  5. ~/.local/bin/dj migrate
  6. 测试
  7. 将源发布到pypi:poetry publish --build --username USERNAME --password PASSWORD

致谢

  • poetry:请,请继续帮助复杂的1)创建Python项目,和2)安装依赖项;严重的是,在没有你
  • 的情况下是令人困惑的。
  • click:可笑的全功能库,帮助在python中实现cli程序;它有所有的钟声和大部分的哨声
  • attrs:您想要python中的简单类吗?是的,请
  • delegator.pysubprocess是一种痛苦,但是delegator在一个好的api背后隐藏了所有丑陋的东西
  • python-dotenv:12使用.env文件考虑所有因素
  • toml:我生活中的牙套越少越好

现有技术

这不是一个新的想法,还有一些其他的实现可以做类似的事情。但是,呃,我喜欢我的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异