CookieCutter安装与使用

简洁:cookiecutter是Python一款快速搭建项目的命令行工具。

安装:pip install cookiecutter

使用:

创建Django项目示例:cookiecutter https://github.com/pydanny/cookiecutter-django.git

环境配置:

project_name [My Awesome Project]: myproject  # 项目名称
project_slug [myproject]: app01  # slug
description [Behold My Awesome Project!]: This is the first application!  # 项目描述
author_name [Daniel Roy Greenfeld]: yourname  # 作者
domain_name [example.com]: example.com  # 部署的域名
email [__jack__@example.com]: imooc@imooc.com  # 邮箱
version [0.1.0]:  # 版本号,默认为0.1.0
Select open_source_license:  # 选择项目License
1 - MIT
2 - BSD
3 - GPLv3
4 - Apache Software License 2.0
5 - Not open source
Choose from 1, 2, 3, 4, 5 (1, 2, 3, 4, 5) [1]: 5
timezone [UTC]: Asia/Shanghai  # Django settings中的TIME_ZONE
windows [n]: n # 是否是Windows环境
use_pycharm [n]: y  # 是否使用Pycharm开发
use_docker [n]: y  # 是否使用Docker容器
Select postgresql_version:  # 选择Postgres数据库版本,cookiecutter-django默认只支持Postgres
1 - 10.5
2 - 10.4
3 - 10.3
4 - 10.2
5 - 10.1
6 - 9.6
7 - 9.5
8 - 9.4
9 - 9.3
Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 (1, 2, 3, 4, 5, 6, 7, 8, 9) [1]: 1
Select js_task_runner:  # js运行方式
1 - None
2 - Gulp
Choose from 1, 2 (1, 2) [1]: 1
custom_bootstrap_compilation [n]: n  # 是否自定义bootstrap压缩
use_compressor [n]: n  # 是否使用压缩
use_celery [n]: n  # 是否使用celery,一个异步任务队列
use_mailhog [n]: n  # 是否使用mailhog,Django项目中发送邮件的,也可以使用Mailgun代替
use_sentry [n]: n  # 是否使用错误日志日志监控,sentry也是不错的开源python项目
use_whitenoise [n]: y  # 是否使用whitenoise
use_heroku [n]: n  # 是否使用heroku,heroku是国外著名的云服务厂商之一,提供PaaS
use_travisci [n]: n  # 是否使用travisci,类似于jekins,用于DevOps中的持续集成与发布
keep_local_envs_in_vcs [y]: y  # 对于本地环境变量使用版本控制
debug [n]: y  # 是否开启debug模式,settings中配置
 [SUCCESS]: Project initialized, keep up the good work!
[root@shiyanlou ~]#

    完成后进入项目目录,初始化git仓库在开发环境中进入config文件夹,修改base.py,在项目根目录下创建.env文件按照下面的代码修改原来的代码

READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=True)
CELERY_ACCEPT_CONTENT = ["json",'msgpack']
CELERY_TASK_SERIALIZER = "msgpack"
EMAIL_BACKEND = env(
    "DJANGO_EMAIL_BACKEND", default="django.core.mail.backends.smtp.EmailBackend"
)
EMAIL_HOST = env('DJANGO_EMAIL_HOST')
EMAIL_USE_SSL = env('DJANGO_EMAIL_USE_SSL',default = True)
EMAIL_PORT = env('DJANGO_EMAIL_PORT',default = 465)
EMAIL_HOST_USER = env('DJANGO_EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env('DJANGO_EMAIL_HOST_PASSWORD')
DEFAULT_FROM_EMAIL = env('DJANGO_DEFAULT_FROM_EMAIL')

CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND')

    .env 文件配置

#MySQL
DATABASE_URL=mysql://zanhu:123456@127.0.0.1/zanhu
#REDIS
REDIS_URL=redis://127.0.0.1:6379

DJANGO_DEBUG=True
DJANGO_SECRET_KEY=fp2#2%p3z-(g+f--k&0gutlah85vd6wp^y6lc3wfdrkr*l3n_v

#Email
DJANGO_EMAIL_USE_SSL=True
DJANGO_EMAIL_HOST='smtp.qq.com'
DJANGO_EMAIL_PORT=25
DJANGO_EMAIL_HOST_USER='597445210@qq.com'
DJANGO_EMAIL_HOST_PASSWORD='xxaejnxormsabcce'
DJANGO_DEFAULT_FROM_EMAIL=EMAIL_HOST_USER
#Celery
CELERY_BROKER_URL=redis://127.0.0.1:6379/1
CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/2

 

可用的Cookiecutter模板

现在在已经有很多开源的Cookiecutter 项目模板可供选择。

特定的Cookiecutter模板

这些模板由cookiecutter官方团队进行维护:

Cookiecutter模板分类

社区驱动的各类Cookiecutter模板(非Cookiecutter官方维护)

Python

Python-Django

Python-Pyramid

  • pyramid-cookiecutter-alchemy:Cookiecutter (项目模板),使用SQLite创建Pyramid项目,SQLAlchemy用于ORM,URL调度用于路由,Jinja2用于模板。
  • pyramid-cookiecutter-starter: 使用URL调度进行路由分配,使用Jinjab 2、Chameleon或Mako模板创建Pyramid入门项目的Cookiecutter (项目模板)。
  • pyramid-cookiecutter-zodb:Cookiecutter(项目模板),用于创建Pyramid项目,使用ZODB进行持久存储,遍历路由,使用Chameleon进行模板化。
  • substanced-cookiecutter: 用于创建Substance D初始项目的cookiecutter(项目模板)。 Substance D是基于Pyramid实现的。
  • cookiecutter-pyramid-talk-python-starter: 一个自以为是的Cookiecutter模板,用于创建PyramidWeb应用程序,从开发链的下游开始。这个cookiecutter模板将创建一个新的Pyramid Web应用程序,其中包含电子邮件,sqlalchemy,rollbar以及更多的集成。

**Cookiecutter (meta) **

用于生成Cookiecutter项目模板的元模板。

Ansible

Git

C

C++

C#

Common Lisp

Elm

Golang

Java

JS

Kotlin

LaTeX/XeTeX

PHP

Sublime Text

Berkshelf-Vagrant

HTML

Data Science

  • widget-cookiecutter: 用于创建自定义Jupyter小部件项目的cookiecutter模板。
  • cookiecutter-data-science:为在Python中进行和共享数据科学工作的逻辑的、合理标准化的、灵活的项目结构。此处提供了的完整文档 。
  • cookiecutter-r-data-analysis: 组织基于R的工作流->doc(通过pandoc)->pdf报告(通过latex)的模板
  • cookiecutter-docker-science: Cookiecutter template for data scientists working in Docker containers.为使用Docker容器工作的数据科学家准备的Cookiecutter模板。

Reproducible Science

  • cookiecutter-reproducible-science: 用于开始一个可重复和透明的科学项目,包括数据,模型,分析和报告的cookiecutter模板 (比如你的科学论文)。与上面数据科学Cookiecutter模板的哲学非常一致

数据驱动的Journalism

  • cookiecutter-data-driven-journalism: 通过持续组织数据日志项目和一些预先填充的文件来促进数据日志的透明度的Cookiecutter模板(包括 .gitignore, README, AUTHORS)

持续交付

云工具

Tornado

其他

与Cookiecutter类似的项目

    • Paste 具有创建骨架项目的创建选项。
    • Diecutter: 一个提供模板和变量的配置文件的API服务。
    • Django的tartproject和startapp命令可以使用-template选项。
    • python-packager:使用自己的模板创建Python包,并提供可配置的选项。
    • Yeoman 有一个受Rails启发的生成器系统,为应用程序提供脚手架。
    • Pyramid的pcreate命令,用于从脚手架模板创建Pyramid 项目。
    • mr.bob 是一个文件系统模板渲染器,用于弃用paster和templer等工具
    • grunt-init 曾经被内置到Grunt中,现在是一个独立的脚手架工具,可以自动创建项目。
    • scaffolt 使用Handlebars 的JSON生成器。
    • init-skeleton 克隆或复制存储库,执行npm安装和bower安装,并删除.git目录。
    • Cog 由Ned Batchelder开发的基于python的代码生成工具包
    • Skaffold 基于python和json配置的django / MVC生成器,带有一些附加组件和集成
posted @ 2020-04-23 10:07  qijunL  阅读(1066)  评论(0编辑  收藏  举报