我第一次在Django上尝试Hello World

我是一个刚学习Django两个月的初级工程师。
这是我第一次发帖,所以我将记录我在Django中如何输出“Hello World”到浏览器。

环境

    • Macで開発

 

    • Python 3.7.5

 

    Django 2.2.6

安装Django

pip install django==2.2.6

首先,使用上述命令安装 Django。此次我们使用 Django 2.2.6,所以在 django 后面加上 ==2.2.6 来指定版本。

请用下面的命令,进行确认是否实际安装了这个软件。

$ python -m django --version
2.2.6

创建项目

一旦安装完成后,接下来我们要创建一个项目。
首先,运行以下命令来创建一个名为myapp的目录。

$ mkdir myapp 

随后,

$ cd myapp 

使用上述命令将目录切换到myapp,并执行下面的命令来创建项目。

$ django-admin startproject conf . 

请通过以下命令确认是否已创建了名为”conf”的项目。

$ ls 
conf  manage.py 

如果有创建 conf 和 mange.py 的话,就可以了。
整个目录结构应该如下所示。

myapp
|
├── manage.py
|
└── conf
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

创建应用程序

在Django中,你可以在项目中创建多个应用程序。
这次我们创建一个名为hello的应用程序。

$ python manage.py startapp hello 

以下有可能是目录结构图。

myapp
|
├── manage.py
|
├── conf
|   ├── __init__.py
|   ├── settings.py
|   ├── urls.py
|   └── wsgi.py
|
└── hello
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

如果保持现状,hello应用程序将不会生效,所以需要在conf文件的settings.py中进行配置,以告知hello应用程序已被添加的设置。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello',
]

每次创建新应用程序时,必须按照上述方式添加,并被认可和应用。

设置URL

接下来,我们要进行URL的设置。虽然只在conf的url.py中添加url模式也可以,但随着配置的增加,管理将变得更加困难,因此将其分开设置为每个应用程序是最佳实践。

我們將編輯conf的url.py,內容如下。

from django.contrib import admin
from django.urls import path, include ⇦ includeをインポート

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('hello.urls')), ⇦ 追加
]

首先,导入include模块,然后在urlpatterns列表中添加path(”, include(‘hello.urls.py’))。
这个操作使用include函数来读取hello应用程序的urls.py文件。这样做可以使我们只需专注于编辑hello应用程序的urls.py文件。

接下来,我们要在hello应用程序中创建一个名为urls.py的文件。由于startapp命令不会自动创建应用程序目录下的urls.py文件,所以我们需要手动创建它。

如果您在hello应用程序中创建了urls.py文件,请按照以下方式进行编辑。

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index),
]

从. import view可以将views.py从同一层次导入。
path(”,views.index)指定了URL路径的第一个参数(在本例中为空),并指定了匹配URL模式的view函数作为第二个参数(将在下一步创建view函数)。第三个参数用于反向解析URL,以’name =指定的名称’的形式写入。但是,由于本次不需要,所以省略了。没有填写。

创建View函数

好了,终于到了最后的工作了。
请将view.py编辑如下。

from django.http import HttpResponse


def index(request):
    return HttpResponse('Hello World')

首先,导入HttpResponse模块。
然后,在之前创建的hello应用程序的urls.py文件中创建了一个path(”, views.index)的路径,但是第二个参数中的index将会是这次使用的函数,所以需要定义为def index(request)。
HttpResponse(‘Hello World’)将会在括号中放入想要返回作为响应的值,并作为HttpResponse对象返回。

请执行python manage.py runserver。如果出现以下提示,则表示一切正常。

February 01, 2020 - 05:59:05
Django version 2.2.6, using settings 'conf.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

在浏览器中打开 http://127.0.0.1:8000。

hello world.png

如果显示为这样,那就是成功了。恭喜恭喜!!!!

一句话

如果能够成功显示Hello World,这等同于向成为工程师迈出了重要的一步。可能会感到困难,但我相信如果持续学习,迟早会体会到其中的乐趣。
我自己也是在第二个月,仍然是个新手,但我希望能够不断发展。