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生成器,帶有一些附加組件和集成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM