Django学习笔记

有机会接触到Django,所以我将其作为备忘录记录下来。

Django是什么?

这个框架整合了一些方便创建Web应用程序的组件。它是用Python编写的。以下文档提供了详细信息和使用方法。

Django 文档
https://docs.djangoproject.com/ja/

Django Girls的教程可以访问以下链接:https://tutorial.djangogirls.org/ja/

在开始使用Django之前的准备工作

根据上述文件的指示,首先我们来试运行一下。
本次使用的环境如下:
操作系统:Windows 10
编辑器:Visual Studio Code 1.51.1

安装Python并设置虚拟环境。

参考にして,请安装Python。
https://www.python.jp/install/windows/index.html
备注:此时最新版本为3.9.0。

然后创建一个用于执行Python的虚拟环境。在VSCode中打开文件夹,并从终端执行以下命令。

python -m venv .venv
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
.venv\Scripts\Activate.ps1

-m的意思是“指定模块进行执行”。
执行venv模块,创建一个运行环境在”.venv”文件夹里。
第二个Set-ExecutionPolicy是在PowerShell中需要的。
执行Activate.ps1文件来启动虚拟环境。

Django的安装

当虚拟环境创建完成后,我们可以通过终端执行以下命令来安装Django。
另外,也可以顺便更新pip到最新版本。

python -m pip install --upgrade pip
python -m pip install Django

这时候,Django 3.1.3是最新版本。

安装VSCode的扩展功能

为了之后能够进行调试,我们将在VSCode中安装Python的扩展功能。

创建Django项目

使用以下命令创建项目,将自动生成所需的文件,如manage.py等。

django-admin startproject Otameshi_prj

在VSCode中打开manage.py文件,从左侧菜单图标执行→“创建launch.json文件”→Django→按照顺序点击左上角的三角形按钮(开始调试)。
如果在终端上显示如下内容,则表示成功。

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

当您在浏览器中访问 http://127.0.0.1:8000/ 时,您将能够看到Django的页面。

制作Django应用程序

执行以下命令以创建应用程序,这将自动生成所需的文件。

python manage.py startapp Otameshi_app

在项目的urls.py中,添加您创建的应用程序的URL。

 from django.contrib import admin
-from django.urls import path
+from django.urls import include, path

 urlpatterns = [
+    path('Otameshi_app/', include('Otameshi_app.urls')),
     path('admin/', admin.site.urls),
 ]

在应用程序的文件夹中添加urls.py,并设置index。

+from django.urls import path
+
+from . import views
+
+urlpatterns = [
+    path('', views.index, name='index'),
+]

索引处理的内容将在应用程序的views.py中定义为方法。
这里会输出”你好,世界。”

 from django.shortcuts import render
+from django.http import HttpResponse

 # Create your views here.
+
+
+def index(request):
+    return HttpResponse("Hello, world.")

如果能做到这一步,再次运行调试,并在浏览器中访问 http://127.0.0.1:8000/Otameshi_app,将会显示一个写有”你好,世界”的网页。

建立模型

我们将基于数据库的数据称为模型。
在这里,我们尝试创建一个名为Command的数据来存储文本。

 from django.db import models

 # Create your models here.
+
+class Command(models.Model):
+    cmd = models.TextField()

当进行源代码更改时,进行迁移以在环境中反映更改。

python manage.py makemigrations Otameshi_app
python manage.py migrate

创建应用程序注册和管理员

由于确认应用程序可以正常运行,所以要进行应用程序的注册。

 INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'Otameshi_app',
 ]
 from django.contrib import admin
+from .models import Command

 # Register your models here.
+
+admin.site.register(Command)

在这里,我们将进行管理员设置。通过以下命令注册管理员。系统会要求输入管理员姓名、电子邮件地址和密码,请随意输入。

python manage.py createsuperuser

如果到这一步了,再次进行调试操作,访问 http://127.0.0.1:8000/admin。输入刚才设置的管理员用户名和密码,即可看到应用程序和“Command”的API。

使用Django REST Framework

请使用以下命令安装Django REST Framework。

pip install djangorestframework

安装完成后,我们将进行设置,使其可以在项目中使用。

 INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'api',
+    'rest_framework',
 ]

为了进行数据传输,需要创建一个必要的序列化程序。
目标是刚刚创建的命令,将所有项目设置为进行序列化。
(虽然目前只是一个文本项目。)

+from rest_framework import serializers
+from .models import Command
+
+class CommandSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Command
+        fields = '__all__'

创建一个序列化器后,创建一个CommandViewSet来使用它进行显示。

 from django.shortcuts import render
 from django.http import HttpResponse
+from rest_framework import viewsets
+from .models import Command
+from .serializer import CommandSerializer

 # Create your views here.

 def index(request):
     return HttpResponse("Hello, world.")
+
+class CommandViewSet(viewsets.ModelViewSet):
+    queryset = Command.objects.all()
+    serializer_class = CommandSerializer

我们将进行URL设置,以便在http://127.0.0.1:8000/api/command/中进行显示。我们将使用Django REST Framework提供的路由器,将URL和CommandViewSet进行对应。

 from django.contrib import admin
 from django.urls import include, path
+from Otameshi_app.urls import router 

 urlpatterns = [
-    path('Otameshi_app/', include('Otameshi_app.urls')),
+    path('Otameshi_app/', include(router.urls)),
     path('admin/', admin.site.urls),
 ]
 from django.urls import path
+from rest_framework import routers

 from . import views

+router = routers.DefaultRouter()
+router.register('command', views.CommandViewSet)
+
 urlpatterns = [
     path('', views.index, name='index'),
 ]

当您再次执行调试并访问http://127.0.0.1:8000/api/command/时,将显示注册的数据列表。
然而,最开始什么也没有显示,因此当进行POST操作时,可以看到数据会被逐步添加。
※不再需要的数据可以在管理员页面http://127.0.0.1:8000/admin中进行删除。

广告
将在 10 秒后关闭
bannerAds