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中进行删除。