首次的Django ~Python教程~

Django(ジャンゴ)是什么?

Django是一个用于开发Python Web应用程序的“Web框架”。

Web框架就是一个包含许多提高Web应用开发效率的便利功能的工具,简单地说。

如果用身边的东西来比喻的话,就好像做所有的料理都只靠自学,控制火候会很困难,然而如果使用微波炉这种框架,只需一键操作就能轻松完成,希望你能有这样一种形象。※仅仅是一种想象。

如果使用Django,可以用较少的代码轻松创建高质量的Web应用程序。
如果是简单的应用,可能只需要几分钟就能完成了…

有一個例子是由Django建立的知名網站。

・YouTube – YouTube
・Instagram – Instagram
・The New York Times – 纽约时报
・NASA Official Website – 美国国家航空航天局官方网站

Django在Python中的特点

1. 包含了标准功能

在Web应用程序开发中经常使用的功能如用户验证、管理界面和网站导航页面等都已经包含在标准中。

2. 安全性

对于任何威胁都已经采取了对策。

③具有高度的可扩展性和灵活性

Django中处理的每个文件都有确定的角色,可以分别切分并进行开发,因此每个部件具有高度的独立性,可以轻松扩展。因此,它可以灵活地适应各种规模的WEB应用程序。

多种多样的用途

正如之前所提到的一样,Django被公司、组织和政府广泛应用,适用于管理系统、社交网络、科学技术计算等各种用途。

Django的安装

※以下的内容基于使用VScode的前提进行说明。

首先,在终端上。

pip install django

当输入这个命令时,就会自动下载。

通过这样做,Django就被成功安装了。

创建项目

让我们首先创建一个新项目。

这次,我们将尝试创建一个类似以下的聊天应用程序。

「聊天应用」

功能
・最新信息的上方
・待办事项清单
・显示注册和更新时间

已完成的原始代码

将项目命名为chat_app并创建。

python3.10 -m django startproject chat_app
"pythonバージョン名" -m django startproject "プロジェクト名"
図1.png

每个文件的作用如下:
*由于是为初学者提供的简单概述说明,只是粗略的解释,仅供参考。

_init_.py:表示Python软件包的文件

通过创建此文件,可以将文件夹打包,并可以轻松使用其他文件中的模块。

・settings.py:Django项目的配置文件

这是一个描述Web应用程序中项目配置的文件。通过这些配置值,可以改变Web应用程序的各种设置和操作。

・urls.py:项目的URL声明文件

这个文件描述了执行哪个网址会执行哪个处理过程。

・wsgi.py:用于部署的文件

WSGI是Web服务器网关接口的简称,在Python中用于定义Web服务器和Web应用程序之间进行通信的标准化接口。它是一个用于描述在连接到Web服务器时要加载的配置的文件。

・asgi.py:用于部署的文件

ASGI是指非同步服务器网关接口(Asynchronous Server Gateway Interface),它是用于执行异步应用程序的接口定义。
它在Django3中被引入,类似于WSGI,是一个用于描述在连接到Web服务器时要加载的配置的文件。

manage.py 是用于执行 Django 命令时所使用的文件。

这是用于执行项目中各种操作的文件。

创建应用程序

接下来,在刚刚创建的项目文件、manage.py所在的同一级目录中创建一个应用程序。
将应用程序命名为todo_app。

python3.10 -m django startapp todo_app
"pythonバージョン名" -m django startapp "アプリケーション名"
図1.png
・_init_.py:表示一个Python包的文件
– 迁移:存储迁移文件的文件夹 : de

这是用于生成数据库的设计蓝图。

・admin.py:管理站点的配置文件

管理员和开发人员使用。
通过管理网站,可以轻松地操作表格记录。

・apps.py: 这个文件用于描述构建应用程序的配置。

通过在settings.py中编写app的设置来读取其内容,并反映该app功能于整个项目中。

・models.py:用于模型定义时使用的文件

我們將開始描述要在數據庫中註冊的表格。

・tests.py:用于编写测试代码的文件

您可以使用tests.py来执行Django的测试功能。

· views.py:定义Django的View的文件

这个文件是项目的核心文件。通过这个文件,可以加载各种功能,设置html文件和注册数据等,为后端提供功能。

应用程序的关联

首先,将先前创建的应用程序与settings.py文件关联起来。打开settings.py文件,在INSTALLED_APPS列表中添加’todo_app’。

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "todo_app",  # アプリケーション名
]

接下来,我们将更改语言和时区的设定。

LANGUAGE_CODE = "ja"  # 日本語

TIME_ZONE = "Asia/Tokyo"  # 日本時間

数据库 (databases)

最初设置

创建数据库的初始值。

python3 manage.py migrate
スクリーンショット 2023-02-26 13.55.20.png

创建表格

接下来,我们将创建一个表。
打开todo_app文件夹中的models.py文件,并进行以下描述。

# Create your models here.
class Todo(models.Model):
    memo = models.TextField()  # todoの内容を保持するフィールド(テキスト)
    is_done = models.BooleanField(default=False)  # 処理済みかどうかを管理(True or False)
    created_at = models.DateTimeField(auto_now_add=True)  # 作成日時を保持(日付型)
    updated_at = models.DateTimeField(auto_now=True)  # 更新日時を保持(日付型)

创建模型

使用刚刚创建的Todo类来创建模型。

python3 manage.py makemigrations todo_app
スクリーンショット 2023-02-26 14.14.29.png

创建装置

Fixture是Django中提供的功能,用于准备初始数据和测试数据。
您只需使用一个命令即可插入数据或将数据重复使用为测试数据。

python3 manage.py migrate todo_app
スクリーンショット 2023-02-26 14.20.37.png

确认数据库

打开todo_app文件夹中的admin.py文件,并进行以下描述。

from .models import Todo # Todoクラスのインポート

# Register your models here.
admin.site.register(Todo) # Todoモデルの追加

接下来进行管理员ID和密码的设置。

python3 manage.py migrate todo_app

ユーザー名 (leave blank to use '                '): 
メールアドレス:
Password: 
Password (again): 

只要最后显示“成功创建超级用户。”,就表示成功了。

让我们立即启动应用程序吧。

python3 manage.py runserver
スクリーンショット 2023-02-26 16.53.35.png
http://127.0.0.1:8000/admin/
スクリーンショット 2023-02-26 16.56.54.png

创建一个视图

首先我们将创建一个顶层界面。我们需要在todo_app文件夹中打开views.py文件,并进行以下的编写以确定要显示哪个页面。

from django.shortcuts import render, redirect  # レンダリング、リダイレクト機能のインポート
from django.views import View  # Viewクラスのインポート
from todo_app.models import Todo  # Todoクラスのインポート

# Create your views here.
# トップ画面
class IndexView(View):

    # Getリクエストの時の処理
    def get(self, request):
        # DBから更新日時降順でTODOを取得してテンプレートに返す
        todos = Todo.objects.all().order_by("-updated_at")
        # render(request, パス, 渡したいデータ(辞書形式))
        return render(request, "templates/todo/index.html", {"todos": todos})

    # Postリクエストの時の処理
    def post(self, request):
        # フォームに記載された内容をデータベースに記録する
        memo = request.POST["memo"]
        todo = Todo(memo=memo)
        todo.save()
        # リダイレクト(別のページに転送する)
        return redirect("/")

简单说,get和post的区别是:
当只是查看时使用get,
当需要修改时使用post,
这样就可以有个大概的想法了。

在这个网站上有一个易懂的解释。
“GET方法”和”POST方法”之间的区别。

渲染是将某些信息以不同形式呈现的过程。通过这样做,我们可以使其在浏览器中更易读,而不仅仅是简单的文字列表。

创建HTML模板

図1.png
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <!-- Todoの新規登録用フォーム -->
    <div>
      <form action="/" method="post">
        {% csrf_token %}
        <input type="text" name="memo" />
        <input type="submit" value="送信" />
      </form>
    </div>
    <!-- 登録されたTodoを表示するリスト -->
    <ul>
      {% for todo in todos %}
      <li>
        <p>
          <span>{{ todo.memo}}</span>
          <span>{{ todo.updated.at }}</span>
        </p>
      </li>
      {% endfor %}
    </ul>
  </body>
</html>

定义URL的路由

路由是将处理分配给URL等的过程。
我们将编辑urls.py文件。

from django.contrib import admin
from django.urls import path
from todo_app.views import IndexView  # IndexViewクラスのインポート

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", IndexView.as_view()),  # URLの最後が空白だったらIndexViewを返す
]

考试

让我们来确认一下到目前为止我们所创建的东西究竟是什么样子了吧。

python3 manage.py runserver
http://127.0.0.1:8000
スクリーンショット 2023-02-26 18.28.48.png
スクリーンショット 2023-02-26 18.29.35.png
bannerAds