【Django入门】尝试在Django中将“Hello World”输出到浏览器上

首先

你好,我是k_uki。我目前正在学习用Django进行应用开发,进行追赶。

在追赶过程中,我学习了以下项目。

    • Djangoプロジェクトの作り方と生成されたファイルの用途

 

    ‘urls.py’,’views.py’を使って’Hello World’を出力する方法。

在这次学习上述项目时,我们将总结我们所实践的内容。

在学习过程中,我参考了这本书。它详细解释了术语和处理,并且不仅适合第一次接触Web框架的人,也特别推荐给已经接触过其他框架并转移到Django的人。

0: 安装Django

如果您第一次接触Django,请在创建项目之前安装Django。如果您已经完成安装,可以跳过本章。
接下来我们将安装Django。在Windows操作系统中,使用WSL2启动Ubuntu。然后在其中创建venv虚拟环境并执行命令。

$ pip install django==3.2

您可以通过运行上述命令,指定并安装版本为3.2的Django。

Django项目的创建方法

完成安装Django后,我们立即创建项目。创建项目使用startproject命令。

$ django-admin startproject プロジェクト名

这次,我们要输出Hello World,所以将项目命名为“helloworldproject”。

$ django-admin startproject helloworldproject
django1.png

确认生成的文件。

__init__中的py文件

__init__.py作为一个文件,用来告知其他Python文件目录是一个Python包。
通过存在这个文件,可以从其他文件中调用类和函数,例如HttpResponse。

asgi.py

asgi.py是从Django3.0开始添加的文件,简单来说,它是一个包含了简便实现异步通信功能的文件。

设置.py

`setting.py` 是用来写入整个项目的配置的文件。在这里,您可以注册密钥,指定存储模板的目录等等。

urls.py 的汉语理解翻译:网址记录.py

urls.py文件将根据从浏览器接收到的请求,向即将创建的views.py发送指令,并确定执行的处理内容等。在这里,我们要在urls.py中编写确定显示Hello World的URL和指定显示方法的内容。

wsgi.py 可以被换成以下的中文句子:

WSGI.py

wsgi.py是一个遵循WSGI(Web服务器网关接口)规范,用于在Web服务器和Django之间进行中介的文件。

管理.py

manage.py是用于使用Django预先提供的功能的文件。可用功能包括启动Web服务器和迁移文件的迁移功能。如果要使用Django提供的功能,请按照以下格式输入命令。

$ python3 manage.py  コマンド名
# webサーバを機能する場合
$ python3 manage.py runserver

在urls.py文件中接收请求。

一旦项目创建完成后,我们立即开始编写代码。首先,在urls.py中添加如下代码。

from django.contrib import admin
from django.urls import path, include
from .views import helloworldfunc # 追加
urlpatterns = [
    path('admin/', admin.site.urls),
    path('helloworldurl/',helloworldfunc), # 追加
]

我将解释这段代码。
在第三行的”from .views import helloworldfunc”这句话中,我们调用了在views.py文件中定义的”helloworldfunc”函数。

接下来,我们对第二行的描述进行解释。
在path(URL名称,操作名称)中,我们指定了与请求的URL相对应的处理内容。在本例中,如果有请求访问’helloworldurl/’这个URL,那么将应用在views.py中定义的’helloworldfunc’函数。

将处理内容记录在views.py文件中

为了调用前一章中描述的helloworldfunc函数,我们将创建并编写views.py文件。我们将在与urls.py等文件同一层级中创建views.py文件。

$ touch helloworldproject/views.py

我們轉到views.py文件中,開始編寫代碼。

from django.http import HttpResponse

def helloworldfunc(request):
    return HttpResponse('hello world')

在第一行中,我们导入了一个名为HttpResponse的类。HttpResponse简单来说,是用于在浏览器上显示字符串或文件的类。在这种情况下,它被用来在浏览器上显示在最后一行中写入的“hello world”字符串。

在”def helloworldfunc(request)”中,我们记录了urls.py中调用的函数的详细信息。参数中的(request)指的是从Web服务器发送的请求。如果不在参数中包含它,函数将无法接收请求,从而导致错误。请注意。

完成描述后,我们将实际确认是否显示“Hello World”。

$ python3 manage.py runserver
django2.png
return HttpResponse('<h1>hello world</h1>')
django3.png

基于类的视图和基于函数的视图

在Django中,显示视图页面有两种主要方法,分别是基于类的视图和基于函数的视图。在本章中,我们将讨论这两种方法的区别。

基于类的视图

基于类的视图是使用Django最初提供的方法来实现的方式的简化解释。例如,如果要创建数据的列表页面,则使用ListView类。由于方法已经预先准备好,实现难度较低,但缺点是扩展性较差。

函数式视图

函数视图与类视图不同,它是一种从头开始实现自己的处理方式。前一章输出”Hello World”的函数也是函数视图。由于全部是自己实现的,因此具有很高的可扩展性,但缺点是实现难度较高。

使用基于类的视图来输出Hello World。

在这一章中,我们将使用前面提到的基于类的视图来实现Hello World。首先,我们需要编辑urls.py文件。

from django.contrib import admin
from django.urls import path 
from .views import helloworldfunc,HelloWorldClass # HelloWorldClassの記述を追加
urlpatterns = [
    path('admin/', admin.site.urls),
    path('helloworldurl/',helloworldfunc),
    path('helloworldurl2/',HelloWorldClass.as_view()),# 追加
]

在第三行,我们调用了views.py中的HelloWorldClass。
此外,在倒数第二行的代码中,我们指示在访问”helloworldurl2/”这个URL时执行”HelloWorldClass”。在调用类时,需要在末尾添加as_view()方法。

接下来,我们将编辑views.py文件。

from django.http import HttpResponse
from django.views.generic import TemplateView # 追加

def helloworldfunc(request):
  responseobject = HttpResponse('<h1>hello world</h1>')
  return responseobject # return HttpResponse('hello world')

# 以下を新たに記述
class HelloWorldClass(TemplateView): 
  template_name = 'hello.html'

进行第二行的解释。在这里,我们调用了Django预先准备好的TemplateView类。通过这样的描述,我们可以使用TemplateView类中包含的函数等功能。
接下来,我们解释新增的下两行类。我们在HelloWorldClass的参数中指定了TemplateView,并通过继承TemplateView类,使得HelloWorldClass可以使用TemplateView的函数。template_name用于指定在浏览器中显示的HTML文件。在本例中,我们指定了hello.html。

在之前的描述中,我指定了template_name为hello.html,但还没有指定hello.html应该保存在哪里。因此,需要编辑setting.py文件,并指定模板文件的存储位置。

修改setting.py中的以下部分。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'], # 元々[]となっている部分をこのように変更

BASE_DIR指定的是”helloworldproject”文件夹。也就是说,这个描述表示我们进行了”模板位于./helloworldproject/templates文件夹中”的配置。

在与manage.py相同的层次上创建一个名为templates的文件夹,并在其中创建hello.html文件。然后,在hello.html文件中添加“你好,世界”字符串。

完成以上步骤后,重新启动服务器进行确认。

$ python3 manage.py runserver
django4.png

现在,我们能够在类视图和函数视图中都显示出“Hello World”。

最终

以下内容是我在这次实践中所做的。在这次学习中,我学到了以下内容。

    • プロジェクトの作成方法,作成されたファイルの用途

 

    • urls.py,views.pyの記述方法

 

    class-based viewとfunction-based viewの違いとそれぞれの用法

接下来,我想尝试制作一个简单的CRUD应用程序。

bannerAds