学习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,可能會有一些新的發現。

广告
将在 10 秒后关闭
bannerAds