Python django 1.11.7

安装虚拟环境工具

yum install python-virtualenv

创建虚拟环境

virtualenv -p /usr/local/bin/python3 django3
cd django/

进入虚拟环境

source bin/activate

pip安装django

pip3 install django==1.11.7 -i https://mirrors.aliyun.com/simple
(django3) [root@golang myproject]# django-admin --version
1.11.7

创建一个django项目

django-admin startproject myproject

查看项目目录

(django3) [root@golang myproject]# tree myproject/
myproject/
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-36.pyc
│   ├── settings.cpython-36.pyc
│   ├── urls.cpython-36.pyc
│   └── wsgi.cpython-36.pyc
├── settings.py
├── urls.py
└── wsgi.py

1 directory, 8 files

说明:manage.py为项目管理文件,后期的项目管理全部由这个实现。
init.py代表该文件夹是一个包,可以用import导入。
settings.py项目全局设置。
urls.py路由器。
wsgi.py wsgi全称web service gateway interface,初期没什么用,项目上线的时候用,部署用。

设置访问权限

(django3) [root@golang myproject]# vim /opt/django3/myproject/myproject/settings.py 
ALLOWED_HOSTS = ['*',]

运行项目

(django3) [root@golang myproject]# python /opt/django3/myproject/manage.py runserver 192.168.229.120:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

January 18, 2021 - 01:37:50
Django version 1.11.7, using settings 'myproject.settings'
Starting development server at http://192.168.229.120:8000/
Quit the server with CONTROL-C.

web界面访问

在这里插入图片描述

设置语言编码

vim /opt/django/HelloDjango/HelloDjango/settings.py
LANGUAGE_CODE = 'zh-hans'

再次访问

在这里插入图片描述

迁移数据库

我们看到运行代码的时候有句提示,这句提示是让迁移下数据库

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

执行迁移

(django3) [root@golang myproject]# python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

再次启动

(django3) [root@golang myproject]# python /opt/django3/myproject/manage.py runserver 192.168.229.120:8000
Performing system checks...

System check identified no issues (0 silenced).
January 18, 2021 - 02:06:21
Django version 1.11.7, using settings 'myproject.settings'
Starting development server at http://192.168.229.120:8000/
Quit the server with CONTROL-C.

admin登录界面

http://192.168.229.120:8000/admin/
在这里插入图片描述

自己写一个网页

修改urls.py

(django3) [root@golang myproject]# cat  myproject/urls.py 
"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
#新增语句
from web import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #新增语句
    url(r'^myweb/', views.myweb),
]

修改views.py

(django3) [root@golang myproject]# cat web/views.py 
from django.shortcuts import render
#新增语句
from django.http import HttpResponse

# Create your views here.
#新增函数
def myweb(request):
   return HttpResponse('我的web')

访问

说明:修改python代码后已经运行的django会自动重启,直接访问即可。
http://192.168.229.120:8000/myweb/
在这里插入图片描述

简单渲染字体

修改urls.py

(django3) [root@golang myproject]# cat myproject/urls.py 
"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
#新增语句
from web import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myweb/', views.myweb),
    #新增语句
    url(r'^myweb2/', views.myweb2),
]

修改views.py

(django3) [root@golang myproject]# cat web/views.py 
from django.shortcuts import render
#新增语句
from django.http import HttpResponse

# Create your views here.
def myweb(request):
   return HttpResponse('我的web')
#新增函数
def myweb2(request):
   return HttpResponse('<h1>我的web</h1>')

访问

http://192.168.229.120:8000/myweb2/
在这里插入图片描述

制作复杂的html页面

写一个模板

(django3) [root@golang myproject]# mkdir /opt/django3/myproject/web/templates
(django3) [root@golang myproject]# cat /opt/django3/myproject/web/templates/index.html
<div class="header">
  <h1>菜鸟教程网页测试实例</h1>
  <p>创建一个页面。</p>
</div>
 
<div class="navbar">
  <a href="#">链接</a>
  <a href="#">链接</a>
  <a href="#">链接</a>
  <a href="#" class="right">链接</a>
</div>
 
<div class="row">
  <div class="side">
      <h2>关于我</h2>
      <h5>我的照片:</h5>
      <div class="fakeimg" style="height:200px;">这边插入图像</div>
      <p>关于我的介绍..</p>
      <h3>更多内容</h3>
      <p>我的更多内容</p>
      <div class="fakeimg" style="height:60px;">这边插入图像</div><br>
      <div class="fakeimg" style="height:60px;">这边插入图像</div><br>
      <div class="fakeimg" style="height:60px;">这边插入图像</div>
  </div>
  <div class="main">
      <h2>标题</h2>
      <h5>副标题</h5>
      <div class="fakeimg" style="height:200px;">图像</div>
      <p>一些文本..</p>
      <p>菜鸟教程,学的不仅是技术,更是梦想!!!菜鸟教程,学的不仅是技术,更是梦想!!!菜鸟教程,学的不仅是技术,更是梦想!!!</p>
      <br>
      <h2>标题</h2>
      <h5>副标题</h5>
      <div class="fakeimg" style="height:200px;">图像</div>
      <p>一些文本..</p>
      <p>菜鸟教程,学的不仅是技术,更是梦想!!!菜鸟教程,学的不仅是技术,更是梦想!!!菜鸟教程,学的不仅是技术,更是梦想!!!</p>
  </div>
</div>
 
<div class="footer">
  <h2>底部内容</h2>
</div>

修改urls.py

(django3) [root@golang myproject]# cat myproject/urls.py 
"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from web import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myweb/', views.myweb),
    url(r'^myweb2/', views.myweb2),
    #新增语句
    url(r'^myweb3/', views.myweb3),
]

修改views.py

(django3) [root@golang myproject]# cat web/views.py 
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def myweb(request):
   return HttpResponse('我的web')

def myweb2(request):
   return HttpResponse('<h1>我的web</h1>')

#新增函数
def myweb3(request):
   return render(request,'index.html')

访问

http://192.168.229.120:8000/myweb3/
在这里插入图片描述
这是因为web没有被识别

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

再次访问

http://192.168.229.120:8000/myweb3/
在这里插入图片描述

返回一个图片

改html文件

在上一节基础上直接改html文件

(django3) [root@golang images]# cat /opt/django3/myproject/web/templates/index.html
{% load static %}
   <div class="main-main">
   <div>
      <img src="{% static 'images/test.jpg' %}" alt="">
   </div>
   </div>

创建图片所在目录

(django3) [root@golang myproject]# mkdir -p /opt/django3/myproject/static/images/
(django3) [root@golang myproject]# cd /opt/django3/myproject/static/images/

上传一个test.jpg的图片

(django3) [root@golang images]# ll
总用量 56
-rw-r--r--. 1 root root 56017 9月  20 2019 test.jpg

改setting.py
在最后一行增加如下代码

STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static'),
)

说明:这里的BASE_DIR是在settings.py文件里定义的一个变量,原文如下
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))

访问

http://192.168.229.120:8000/myweb3/
在这里插入图片描述

调整图片位置

改html文件

在上一节基础上直接改html文件

(django3) [root@golang myproject]# cat web/templates/index.html
<style type="text/css">
.imgdiv{
     
     
width:400px;
height:400px;
border:1px solid
}
.imgdiv img{
     
     
margin-top:20px;
padding-left:20px;
}

</style>

{% load static %}
   <div class="imgdiv">
   <div>
      <img src="{% static 'images/test.jpg' %}" alt="">
   </div>
   </div>

访问

http://192.168.229.120:8000/myweb3/
在这里插入图片描述
可以看到,图片位置已经移动。

创建新目录

在项目myproject根目录/opt/django3/myproject下,创建一个templates目录

(django3) [root@golang myproject]# mkdir /opt/django3/myproject/templates

写html文件

(django3) [root@golang myproject]# cat /opt/django3/myproject/templates/home.html
<style type="text/css">
.imgdiv{
     
     
width:400px;
height:400px;
border:1px solid
}
.imgdiv img{
     
     
margin-top:20px;
padding-left:20px;
}

</style>

{% load static %}
   <div class="imgdiv">
   <div>
      <img src="{% static 'images/test.jpg' %}" alt="">
   </div>
   </div>

修改urls.py

(django3) [root@golang myproject]# cat myproject/urls.py 
"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from web import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myweb/', views.myweb),
    url(r'^myweb2/', views.myweb2),
    url(r'^myweb3/', views.myweb3),
    #新增语句
    url(r'^home/', views.home),
]

修改views.py

(django3) [root@golang myproject]# cat web/views.py 
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def myweb(request):
   return HttpResponse('我的web')

def myweb2(request):
   return HttpResponse('<h1>我的web</h1>')

def myweb3(request):
   return render(request,'index.html')

#新增函数
def home(request):
   return render(request,'home.html')

访问

http://192.168.229.120:8000/home/
在这里插入图片描述

修改setting.py

在TEMPLATES下的DIRS下将新建的目录加上。

TEMPLATES = [
    {
    
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
         os.path.join(BASE_DIR,'templates'),
         ],
        'APP_DIRS': True,
        'OPTIONS': {
    
    
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

再次访问

http://192.168.229.120:8000/home/
在这里插入图片描述

快速制作网页

复制网页代码

随便从网页上复制代码粘贴到/opt/django3/myproject/templates/home.html文件里

访问

http://192.168.229.120:8000/home/

在这里插入图片描述
说明:这里边的视频是不可以看的。

拆分urls

setting.py中设置了根urls为myproject/urls.py,这样随着项目越来越多,根urls会越来越多,为了解决这个问题,可以在新建的项目底下写自己的urls。

新建一个项目web02

(django3) [root@golang myproject]#  python manage.py startapp web02

写自己的urls

新增文件,并编辑文件内容

(django3) [root@golang myproject]# cat web02/urls.py 
from django.conf.urls import url
from web02 import views

urlpatterns = [
   url(r'^index/',views.index),
]
(django3) [root@golang myproject]# cat myproject/urls.py 
"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
#include为新导入的
from django.conf.urls import url,include
from django.contrib import admin
from web import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myweb/', views.myweb),
    url(r'^myweb2/', views.myweb2),
    url(r'^myweb3/', views.myweb3),
    url(r'^home/', views.home),
    #新增语句
    url(r'^web02/',include('web02.urls')),
]

修改views.py

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

#新增函数
def index(request):
   return HttpResponse('web02')

访问

http://192.168.229.120:8000/web02/index/
在这里插入图片描述

models

models使用了ORM(Object Relational Mapping)对象关系映射技术。
将业务逻辑和SQL进行了解耦合,不用再写SQL对数据进行操作,并且和后端数据库是什么类型没关系。
通过models定义实现数据库表的定义。

python manage.py startapp web02
(django3) [root@golang myproject]# cat web02/models.py 
from django.db import models

# Create your models here.
class Student(models.Model):
   s_name=models.CharField(max_length=16)
   s_age=models.IntegerField(default=1)
(django3) [root@golang myproject]# cat myproject/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'web',
    'web02',
]

生成迁移文件

(django3) [root@golang myproject]# python manage.py makemigrations
Migrations for 'web02':
  web02/migrations/0001_initial.py
    - Create model Student

在web02/migrations/目录下增加了一个迁移文件0001_initial.py

(django3) [root@golang myproject]# ll web02/migrations/
总用量 4
-rw-r--r--. 1 root root 612 118 12:31 0001_initial.py
-rw-r--r--. 1 root root   0 118 11:34 __init__.py
drwxr-xr-x. 2 root root  70 118 12:35 __pycache__

迁移数据

(django3) [root@golang myproject]# python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, web02
Running migrations:
  Applying web02.0001_initial... OK

插入数据

改urls.py

(django3) [root@golang myproject]# cat web02/urls.py 
from django.conf.urls import url
from web02 import views

urlpatterns = [
   url(r'^index/',views.index),
   #新增语句
   url(r'^addstudent/',views.add_student),
]

改views.py

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
# Create your views here.
def index(request):
   return HttpResponse('web02')

#新增函数
def add_student(request):
   student=Student()
   student.s_name='Jerry'
   student.save()
   return HttpResponse('添加成功%'%student.s_name)

测试

浏览器输入
http://192.168.229.120:8000/web02/addstudent/
在这里插入图片描述

将数据打印出来

修改urls.py

(django3) [root@golang myproject]# cat  web02/urls.py 
from django.conf.urls import url
from web02 import views

urlpatterns = [
   url(r'^index/',views.index),
   url(r'^addstudent/',views.add_student),
   #新增语句
   url(r'^getstudent/',views.get_student),
]

修改views.py

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
import random

# Create your views here.
def index(request):
   return HttpResponse('web02')

def add_student(request):
   student=Student()
   student.s_name='Jerry%s'%random.randrange(100)
   student.save()
   return HttpResponse('添加成功%s' % student.s_name)

#新增函数
def get_student(request):
   students=Student.objects.all()
   for student in students:
      print(student.s_name)
   return HttpResponse('Student List')

运行

(django3) [root@golang myproject]# python /opt/django3/myproject/manage.py runserver 192.168.229.120:8000

浏览器访问
http://192.168.229.120:8000/web02/getstudent/
刷新浏览器,在运行的界面(非浏览器界面)可以看到数据。
在这里插入图片描述

将数据展示在web界面

views.py配置

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
import random

# Create your views here.
def index(request):
   return HttpResponse('web02')

def add_student(request):
   student=Student()
   student.s_name='Jerry%s'%random.randrange(100)
   student.save()
   return HttpResponse('添加成功%s' % student.s_name)

def get_student(request):
   students=Student.objects.all()
   for student in students:
      print(student.s_name)
   #return HttpResponse('Student List')
   context={
    
    
   "key1":"play",
   "key2":"eat",
   }
   return render(request,'student_list.html',context=context)

student_list.html配置

(django3) [root@golang myproject]# cat  /opt/django3/myproject/templates/student_list.html
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8'>
  <title>StudentList</title>
</head>
<body>
<h2>web</h2>
<h3>{
    
    {
    
    key1}}</h3>
<h3>{
    
    {
    
    key2}}</h3>
</body>
</html>

访问

http://192.168.229.120:8000/web02/getstudent/
在这里插入图片描述

继续修改views.py

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
import random

# Create your views here.
def index(request):
   return HttpResponse('web02')

def add_student(request):
   student=Student()
   student.s_name='Jerry%s'%random.randrange(100)
   student.save()
   return HttpResponse('添加成功%s' % student.s_name)

def get_student(request):
   students=Student.objects.all()
   for student in students:
      print(student.s_name)
   #return HttpResponse('Student List')
   context={
    
    
   "key1":"play",
   "key2":"eat",
   "students":students,
   }
   return render(request,'student_list.html',context=context)

继续修改student_list.html

(django3) [root@golang myproject]# cat /opt/django3/myproject/templates/student_list.html
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8'>
  <title>StudentList</title>
</head>
<body>
<h2>web</h2>
<h3>{
    
    {
    
    key1}}</h3>
<h3>{
    
    {
    
    key2}}</h3>

<h1>students</h1>
<ul>
{
    
    %for student in students%}
 <li>{
    
    {
    
    student.s_name}}</li>
{
    
    %endfor%}
</ul>
</body>
</html>

访问

http://192.168.229.120:8000/web02/getstudent/
在这里插入图片描述

更新数据

views.py配置

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
import random

# Create your views here.
def index(request):
   return HttpResponse('web02')

def add_student(request):
   student=Student()
   student.s_name='Jerry%s'%random.randrange(100)
   student.save()
   return HttpResponse('添加成功%s' % student.s_name)

def get_student(request):
   students=Student.objects.all()
   for student in students:
      print(student.s_name)
   #return HttpResponse('Student List')
   context={
    
    
   "key1":"play",
   "key2":"eat",
   "students":students,
   }
   return render(request,'student_list.html',context=context)

#新增函数
def update_student(request):
   student=Student.objects.get(pk=2)
   student.s_name='Jack'
   student.save()
   return HttpResponse('更新成功')

urls.py配置

(django3) [root@golang myproject]# cat web02/urls.py 
from django.conf.urls import url
from web02 import views

urlpatterns = [
   url(r'^index/',views.index),
   url(r'^addstudent/',views.add_student),
   url(r'^getstudent/',views.get_student),
   url(r'^updatetudent/',views.update_student),
]

验证是否更新

访问
http://192.168.229.120:8000/web02/updatestudent/
在这里插入图片描述

验证是否更新
http://192.168.229.120:8000/web02/getstudent/
在这里插入图片描述

删除数据

views.py配置

(django3) [root@golang myproject]# cat web02/views.py 
from django.shortcuts import render
from django.http import HttpResponse
from web02.models import Student
import random

# Create your views here.
def index(request):
   return HttpResponse('web02')

def add_student(request):
   student=Student()
   student.s_name='Jerry%s'%random.randrange(100)
   student.save()
   return HttpResponse('添加成功%s' % student.s_name)

def get_student(request):
   students=Student.objects.all()
   for student in students:
      print(student.s_name)
   #return HttpResponse('Student List')
   context={
    
    
   "key1":"play",
   "key2":"eat",
   "students":students,
   }
   return render(request,'student_list.html',context=context)

def update_student(request):
   student=Student.objects.get(pk=2)
   student.s_name='Jack'
   student.save()
   return HttpResponse('更新成功')

#新增函数
def del_student(request):
   student=Student.objects.get(pk=2)
   student.delete()
   student.save()
   return HttpResponse('删除成功')

urls.py配置

(django3) [root@golang myproject]# cat web02/urls.py 
from django.conf.urls import url
from web02 import views

urlpatterns = [
   url(r'^index/',views.index),
   url(r'^addstudent/',views.add_student),
   url(r'^getstudent/',views.get_student),
   url(r'^updatetsudent/',views.update_student),
   #新增语句
   url(r'^delstudent/',views.del_student),
]

验证是否删除

访问
http://192.168.229.120:8000/web02/delstudent/

在这里插入图片描述
验证是否删除成功
http://192.168.229.120:8000/web02/getstudent/
在这里插入图片描述
可以看到jack已经没了。

猜你喜欢

转载自blog.csdn.net/weixin_40548182/article/details/112762166