Django中使用Cookiecutter搭建项目的完整指南

Elena
Elena
发布时间:2026-10-15 | 3人浏览过
原创

本文详细介绍如何在Django项目中使用Cookiecutter快速搭建开发环境。涵盖从安装pipenv和cookiecutter、解决版本冲突,到执行项目生成及各项参数配置的全流程。同时针对迁移报错等常见坑点提供具体解决方案,帮助开发者高效启动Django项目。

一、安装

首先需要通过包管理工具安装cookiecutter,具体命令为:pipenv install cookiecutter

在导入过程中,用户可能会遇到报错情况。

具体的错误信息如下:pkg_resources.VersionConflict: (importlib-metadata 3.1.0 (/Users/apple/.local/share/virtualenvs/testProject-h0hp04R9/lib/python3.6/site-packages), Requirement.parse('importlib-metadata<2,>=0.12; python_version < "3.8"'))。

该问题的根源在于当前pipenv版本存在兼容性问题。解决方法是升级pipenv,执行命令:pip3 install -U pipenv,随后重新进行导入操作即可。

二、创建项目

接下来需要运行cookiecutter命令来生成项目骨架。

如果直接执行,系统会报错:zsh: command not found: cookiecutter

解决此问题的方法是,使用pipenv --py命令获取当前Python环境的安装目录,然后在该目录下手动运行cookiecutter。

执行后可能会继续提示缺少Template的错误。


Usage: cookiecutter [OPTIONS] TEMPLATE [EXTRA_CONTEXT]...
Try 'cookiecutter -h' for help.
Error: Missing argument 'TEMPLATE'.

此时需要在GitHub上找到pydanny/cookiecutter-django模板,复制其GitHub仓库地址,并将该地址追加到python运行环境命令之后,再次运行即可。


/Users/apple/.local/sha~~~~re/virtualenvs/testProject-h0hp04R9/bin/cookiecutter https://github.com/pydanny/cookiecutter-django.git

成功执行后,系统将进入交互式配置选项,用户需根据实际需求进行具体配置。

三、具体配置

  • project_name:指定项目的名称。
  • project_slug:默认与项目名称保持一致,通常无需额外填写。
  • description:填写项目的简要描述。
  • author_name:填写作者名称,格式要求为“名字”。
  • domain_name:设置网站的域名。
  • eamil:填写联系邮箱地址。
  • version [0.1.0] Select open_source_license:选择是否开源以及开源许可证类型。
  • timezone:设置时区,例如Asia/Shanghai。
  • windows:确认是否使用Windows系统进行开发。
  • use_pycharm:确认是否使用PyCharm作为开发工具。
  • use_docker:确认是否启用Docker容器化部署。
  • Select postgresql_version:选择PostgreSQL数据库版本,默认为最新版,且默认不继承MySQL。
  • Select js_task_runner:选择JavaScript运行器,通常使用默认选项。
  • Select cloud_provider:选择云服务提供商,默认为默认选项。
  • Select mail_service:选择邮件发送服务。
  • use_async:确认是否启用异步编程支持。
  • use_drf:确认是否使用Django REST Framework,若采用前后端分离架构建议选择y。
  • custom_bootstrap_compilation:确认是否进行自定义Bootstrap压缩。
  • use_compressor:用于压缩JS和CSS的技术,建议选择y。
  • use_celery:确认是否使用Celery异步任务队列,若使用请选择y。
  • use_mailhog:确认是否使用第三方邮件发送服务Mailhog。
  • use_sentry:确认是否启用错误日志监控服务Sentry。
  • use_whitenoise:确认是否使用Whitenoise处理静态文件部署,该工具具备文件压缩功能。
  • use_heroku:若计划部署到Heroku平台,选择y可自动生成相应配置。
  • Select ci_tool:选择持续集成工具,选项包括None、Travis、Gitlab或Github。
  • keep_local_envs_in_vcs:确认是否在本地环境变量中使用版本控制系统配置,建议选择y。
  • debug:确认是否启用Debug模式,建议选择y以便调试。

四、问题:

在项目进行数据迁移时,可能会遇到报错。


 File "/Users/apple/.local/share/virtualenvs/django-pro-7n8-wfJY/lib/python3.6/site-packages/django_celery_beat/models.py", line 60, in crontab_schedule_celery_timezone
 choice[0].zone for choice in timezone_field.TimeZoneField.CHOICES
AttributeError: type object 'TimeZoneField' has no attribute 'CHOICES'

原因分析:django-celery-beat的setup.py文件中存在一个依赖要求(https://github.com/celery/django-celery-beat/blob/master/requirements/default.txt),强制要求django-timezone-field的版本必须在>=4.0和<5.0之间。开发者推送的4.1.1版本django-timezone-field与此要求冲突,从而中断了数据迁移过程。

解决办法:执行pipenv install django-timezone-field==4.0指定兼容版本,然后重新执行数据迁移命令即可。

总结

至此,关于Django中Cookiecutter的使用教程介绍完毕。如需了解更多相关Django Cookiecutter使用内容,请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表