再一次问好!特别是对于“ Python的Web开发人员”课程的学生,我们准备了另一种有趣的翻译。
Django项目模板是解决默认Django项目格式不再满足要求时出现的问题的自然方法。今天,在本指南中,您将学习如何从模板创建自己的项目。Django中的项目模板是什么?
Django鲜为人知的功能之一是能够通过模板(即自定义目录结构)创建项目。当默认项目格式不够用时(当您想在生产环境上部署解决方案时,这绝对是不够的),或者当您要在其中一次又一次地使用相同的配置时,这很方便。在Django上有很多项目。Django项目模板不过是具有预定义自定义目录结构的项目,您可以在几分钟内创建自己。流行的Django模板的一个示例是django-cookiecutter。Django Cookiecutter它具有广泛的功能和配置,可以自足部署到生产中,这是可用于在Django上创建几乎所有新项目的途径。但是,django-cookiecutter有时是多余的,尤其是对于初学者而言,因此在使用它之前,请创建一个更简单的Django模板,以更好地帮助您了解基础知识。在以下各节中,您将学习如何创建自己的模板。如何创建自己的Django项目模板
首先,在选定的文件夹中创建一个Python虚拟环境并安装Django(请注意,这是四个单独的命令):mkdir project-name && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django
然后使用以下命令创建一个Django项目:django-admin startproject project_name .
注意名称,它应该恰好是project_name。之后,在编辑器中打开项目。(请注意,在我们的示例中,我将project_name用作文件夹和项目名称)。现在,您需要查看项目中的每个文件,并用{{project_name}}替换所有project_name(单行sed命令就可以了)。
您将需要修改的文件:- manage.py
- settings.py
- wsgi.py
- asgi.py
您可能已经猜到了,{{project_name}}变量是一个占位符。例如,在manage.py中,您将需要替换以下内容:# manage.py
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
try:
# omit
在此:# manage.py
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')
try:
# omit
在wsgi.py中,您可以更改以下内容:os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
要以下内容:os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')
等等。此外,您可以创建所需的任何配置,甚至更好,将Django设置解析为单独的文件以进行开发,测试和生产。您将在此处找到示例。在继续下一步之前,请确保从项目模板中删除虚拟环境。如何使用自己的模板创建Django项目
有了项目模板后,就可以使用它了。为此,请在另一个文件夹中创建一个新的Python虚拟环境并安装Django:mkdir new-django-project && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django
现在,我们将不再传递django-admin startproject,而是传递--template标志从模板中进行安装。假设如果您在〜/ project-name主目录中创建了一个模板,则将执行以下操作:django-admin startproject --template ~/project-name new_django_project .
此命令将从模板创建一个新的Django项目。(请注意,在此示例中,我使用new-django-project作为外部文件夹,并使用new_django_project作为项目名称)。现在,您可能想知道是否可以使用例如GitHub上存储库中的远程模板。当然是!如何从远程模板创建Django项目
该--template标志为startproject命令可以接受URL作为远程源。因此,您可以从远程模板创建Django项目,例如:django-admin startproject --template https://github.com/username/repo/archive/master.zip new_django_project .
奖励:适用于所有内容的模板
除了标准化与Django相关的文件外,您还可以对项目中的任何其他文件进行相同的操作。假设您需要部署到需要Procfile的 Heroku 。要通过模板系统传递Procfile以便将{{project_name}}替换为项目的实际名称,可以使用--name标志运行startproject。django-admin startproject --template https://github.com/username/repo/archive/master.zip --name=Procfile new_django_project .
确保Procfile具有project_name的占位符:release: python manage.py migrate
web: gunicorn -w 3 {{ project_name }}.wsgi --log-file -
资料来源
要创建复杂的Django模板,请看一下ponee,这是一个轻量级的Django模板,可以与Heroku一起使用。这是一个很小但有趣的材料。我们正在等待您的评论,并邀请您参加免费的网络研讨会,在该框架下,我们将详细学习如何在Flask上测试项目,在Flask上编写和运行项目测试,使用Faker和Factory Boy创建测试数据。