Django中使用Cookiecutter搭建项目的完整指南
本文详细介绍如何在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使用内容,请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













