如何构建Django项目的 Makefile

存在代码库里,比存在脑袋里更高效。

长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩

在开发过程中,经常需要在终端中运行一些命令,比如:创建迁移、运行测试、linter 等。通常,需要定期执行这些命令。

pip-install-dev:
 pip install --upgrade pip pip-tools
 pip-sync requirements.txt requirements-dev.txt

pip-install:
 pip install --upgrade pip pip-tools
 pip-sync requirements.txt

pip-update:
 pip install --upgrade pip pip-tools
 pip-compile requirements.in
 pip-compile requirements-dev.in
 pip-sync requirements.txt requirements-dev.txt

为此类命令提供快捷方式很有帮助。 甚至更好地与项目的其他开发人员共享。 为此,可以使用 Makefile 。 这是 Django 项目的有用命令列表。

安装

Poetry与 Dependabot存在一些问题 ,并且根本无法与 Renovate 一起使用。 这里使用的pip-tools和单独的requirements.in还有requirements-dev.in,适用于本地和生产环境。

pip-install-dev:
    pip install --upgrade pip pip-tools
    pip-sync requirements.txt requirements-dev.txt

pip-install:
    pip install --upgrade pip pip-tools
    pip-sync requirements.txt

pip-update:
    pip install --upgrade pip pip-tools
    pip-compile requirements.in
    pip-compile requirements-dev.in
    pip-sync requirements.txt requirements-dev.txt

命令:

  • pip-install-dev:安装所有要求,包括本地。 它是安装项目依赖的主要命令,所以把这个命令放在最上面。

  • pip-install- 不经常使用此命令,但仅使用生产依赖项运行代码可能会有所帮助。

  • pip-update更新 requirements.txtrequirements-dev.txt,将新包添加到 requirements.in或者 requirements-dev.in.

运行项目

server:
    python manage.py migrate && python manage.py runserver

worker:
    python -m celery -A project_name worker --loglevel info

beat:
    python -m celery -A project_name beat --loglevel info

这是显而易见的。 运行本地 Web 服务器和 Celery 。 另外,可以在运行服务器时自动应用新的迁移。

运行linters

lint:
    flake8 palyanytsya
    mypy palyanytsya

black:
    python -m black palyanytsya

cleanimports:
    isort .
    autoflake -r -i --remove-all-unused-imports --ignore-init-module-imports project_name

clean-lint: cleanimports black lint

checkmigrations:
    python manage.py makemigrations --check --no-input --dry-run

命令:

  • lint:运行 flake8 linter 和 mypy 类型检查器。

  • black自动格式化代码 黑色 。

  • cleanimports: 运行 isort 并使用 Autoflake 删除未使用的 导入 。 一定要设置 profile=black在其他设置中,以避免与 Black 发生冲突。

  • clean-lint: 运行上面的所有东西。 您可以在承诺正确格式化代码之前运行此命令。

  • checkmigrations: 防止您在没有迁移的情况下提交模型更改。 真的很酷的东西!

另外,使用 make lint && make checkmigrations在 CI pipeline和 git pre-commit hook中。 还可以创建一个命令来设置这样的hook:

install-hooks: echo "make lint && make checkmigrations" > .git/hooks/pre-commit && chmod 777 .git/hooks/pre-commit

运行测试

test:
    pytest -n 4 -x

使用 pytest-xdist,在multiprocess的模式下运行pytest。

编写消息

messages:
    python manage.py makemessages --all --ignore=venv --extension html,py
    python manage.py translate_messages -s en -l uk -l es -u
    python manage.py compilemessages --ignore venv

搜集所有的字符串文字进行翻译 。 此外,利用Django Autotranslate自动使用 Google Translate 翻译短语。

总结

只要项目继续进行,就会出现新的本地命令。 也许,需要进入开发服务器以运行一些 python 代码。 或者下载一个新的数据库转储(没有敏感数据)用于本地错误重现。最好将这些知识保留在代码库中,而不是存在脑海中。此外,无需向同事解释如何执行完全相同的操作。

对于更复杂的任务,甚至可以创建一个 shell 脚本并从 Makefile 中调用。 因此,帮助其他开发人员找到这个新命令会更容易。

推荐书单

《Python从入门到精通》(第二版)

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》可作为软件开发入门者的学习用书,也可作为高等院校相关专业的教学参考用书,还可供开发人员查阅、参考使用。

这本书有如下特色:

  • 循序渐进,实战讲述

  • 243集教学微课视频,39小时知识点精讲,可听可看,随时随地扫码学

  • 趣味解读,易教易学

  • 赠送Python实战训练背记手册

  • 在线解答,高效学习

    企业QQ、QQ群在线答疑,明日学院社区答疑。

    每周清大文森学堂在线直播答疑。

购买链接:https://u.jd.com/XIgAG8g

精彩回顾

想用Python赚钱?——安排!

【案例】如何使用Flask构建天气预报 

手把手教你创建简单的Python Flask

长按关注《Python学研大本营》

长按二维码,加入Python读者群

扫码关注《Python学研大本营》,加入读者群,分享更多精彩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值