学习cookiecutter-django的最佳实践
首先
这篇文章是2016年Django降临节日历的第7天的文章。
在这里要做的事情
-
- cookiecutter-djangoの紹介
-
- 便利パッケージを学ぶ
-
- 便利外部サービスを学ぶ
- ディレクトリ構成を学ぶ
“Cookiecutter是什么?”
一个命令行工具,可以根据cookiecutters(项目模板)创建项目。例:Python包项目,jQuery插件项目。
用于创建Python项目的CLI工具,用于生成项目的模板。
$ pip install cookiecutter
$ cookiecutter [repository]
cookiecutter-django是什么?
Two Scoops of Django: Best Practices for Django 1.8で紹介されている
この本については5日目の@aki_yokさんがベスト・オブ・Django本! – akiyoko blogで取り上げています
Django Packages : CookiecuttersやGitHubでの検索においても一番人気
$ cookiecutter https://github.com/pydanny/cookiecutter-django
设定选项
项目生成选项 – Cookiecutter Django 2016.49.3 文档
Cloning into 'cookiecutter-django'...
remote: Counting objects: 550, done.
remote: Compressing objects: 100% (310/310), done.
remote: Total 550 (delta 283), reused 479 (delta 222)
Receiving objects: 100% (550/550), 127.66 KiB | 58 KiB/s, done.
Resolving deltas: 100% (283/283), done.
project_name [Project Name]: Reddit Clone
project_slug [reddit_clone]: reddit
author_name [Daniel Roy Greenfeld]: Daniel Greenfeld
email [you@example.com]: pydanny@gmail.com
description [A short description of the project.]: A reddit clone.
domain_name [example.com]: myreddit.com
version [0.1.0]: 0.0.1
timezone [UTC]: America/Los_Angeles
use_whitenoise [y]: n
use_celery [n]: y
use_mailhog [n]: n
use_sentry_for_error_reporting [y]: y
use_opbeat [n]: y
use_pycharm [n]: y
windows [n]: n
use_python3 [y]: y
use_docker [y]: n
use_heroku [n]: y
use_compressor [n]: y
Select postgresql_version:
1 - 9.5
2 - 9.4
3 - 9.3
4 - 9.2
Choose from 1, 2, 3, 4 [1]: 1
Select js_task_runner:
1 - Gulp
2 - Grunt
3 - Webpack
4 - None
Choose from 1, 2, 3, 4 [1]: 1
use_lets_encrypt [n]: n
Select open_source_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]: 1
use_elasticbeanstalk_experimental: n
特点
适用于 Django 1.10
以百分百的起始测试覆盖率渲染 Django 项目
支持 Twitter Bootstrap v4.0.0 – alpha 4(也可使用维护的 Foundation 分支)
通过 django-environ 实现基于 12-Factor 的设置
优化的开发和生产设置
使用 django-allauth 进行注册
自带准备好的自定义用户模型
Grunt 构建用于 compass 和 livereload
通过 Anymail 发送邮件(默认使用 Mailgun,但可切换)
使用 Amazon S3 进行媒体存储
使用 docker-compose 实现对 Docker 的开发和生产支持
用于部署到 Heroku 的 Procfile
部署到 PythonAnywhere 的说明
支持 Python 2.7.x 或 3.5.x
使用 unittest 或 py.test 运行测试
可定制的 PostgreSQL 版本
对 Amazon Elastic Beanstalk 的实验性支持
自选集成
从Amazon S3或Whitenoise中提供静态文件的服务
Celery的配置
与MailHog集成以进行本地邮件测试
与Sentry集成以进行错误日志记录
与Opbeat集成以进行性能监测
介绍包装
Bootstrap
フロントエンドフレームワーク
django-environ
環境変数管理
django-allauth
アカウント認証
django-anymail
各ESP対応Emailバックエンド
協同可行的服务
WhiteNoise
静的ファイル配信
デフォルトはAmazon S3
Celery
タスクキュー
MailHog
メールテスト
Sentry
エラートラッキング
Opbeat
パフォーマンス監視
目录结构
~
├── compose
│ ├── django
│ │ ├── Dockerfile
│ │ ├── Dockerfile-dev
│ │ ├── entrypoint.sh
│ │ ├── gunicorn.sh
│ │ └── start-dev.sh
│ ├── nginx
│ │ ├── Dockerfile
│ │ └── nginx.conf
│ └── postgres
│ ├── Dockerfile
│ ├── backup.sh
│ ├── list-backups.sh
│ └── restore.sh
~
├── config
│ ├── __init__.py
│ ├── settings
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── local.py
│ │ ├── production.py
│ │ └── test.py
│ ├── urls.py
│ └── wsgi.py
~
├── requirements
│ ├── base.txt
│ ├── local.txt
│ ├── production.txt
│ └── test.txt
docker-composeのためにcomposeディレクトリ作成
settingsディレクトリに各環境ごとのファイル格納
requirementsディレクトリに各環境ごとのファイル格納
我认为这些能够作为参考。其他的构成请实际创建项目并进行确认。
最后
我已經簡單地解釋了cookiecutter-django。我認為它能讓您獲得在Django開發中的知識,所以請務必試試看!
順便一提,在Django開發中,你也可以嘗試檢查一下Awesome Django,可能會有一些新的發現。