如何从模板创建Django项目

再一次问好!特别是对于“ Python的Web开发人员”课程的学生我们准备了另一种有趣的翻译。





Django项目模板是解决默认Django项目格式不再满足要求时出现的问题的自然方法。今天,在本指南中,您将学习如何从模板创建自己的项目。

Django中的项目模板是什么?


Django鲜为人知的功能之一是能够通过模板(即自定义目录结构)创建项目。

当默认项目格式不够用时(当您想在生产环境上部署解决方案时,这绝对是不够的),或者当您要在其中一次又一次地使用相同的配置时,这很方便。在Django上有很多项目。

Django项目模板不过是具有预定义自定义目录结构的项目,您可以在几分钟内创建自己。
流行的Django模板的一个示例是django-cookiecutterDjango 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创建测试数据。

All Articles