外观
Django框架-快速入门
约 5362 字大约 18 分钟
2026-03-24
一、 Django框架介绍与安装
(1). Web开发介绍:
- 目前Web开发属于Browser/Server模式,简称BS架构,开发语言有(Python、PHP、Java ...)。
基于Python的Web工作原理如下:

(2). 框架介绍:
①. 什么是框架?
软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品,
框架的功能类似于
基础设施,提供并实现最为基础的软件架构和体系通常情况下我们依据框架来实现更为复杂的业务程序开发
二个字,框架就是程序的
骨架
②. 框架的优缺点
可重用
成熟,稳健
易扩展、易维护
③. Python中常见的框架
大包大揽 Django 被官方称之为完美主义者的Web框架。
力求精简 web.py和Tornado
新生代微框架 Flask和Bottle
④. Web框架中的一些概念
MVC
大部分开发语言中都有MVC框架
MVC框架的核心思想是:解耦
降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
M表示model,主要用于对数据库层的封装
V表示view,用于向用户展示结果
C表示controller,是核心,用于处理请求、获取数据、返回结果
MVT
Django 遵循 MTV(模型-模板-视图)模式,和常见的 MVC(模型-视图-控制器)模式类似——模板相当于 MVC 中的视图,框架本身相当于控制器。
Django MTV 模式中的职责划分如下:
模型(Model):定义数据结构,负责在数据库和视图之间传递数据。
视图(View):接收请求,通过模型从数据库获取数据,再把数据交给模板去渲染。
模板(Template):表示层,负责把数据渲染成浏览器能显示的 HTML 页面。
框架本身充当控制器的角色,根据 URL 配置把请求分发给对应的视图处理。
Django架构
- Django 通过 URL、视图、模型和模板这几个组件来处理请求和响应:

- Django 处理一次 HTTP 请求的流程如下:
浏览器通过 URL 请求页面,Web 服务器把这个 HTTP 请求转交给 Django。
Django 依次匹配配置好的 URL 模式,找到第一个匹配的就停下来。
Django 调用匹配到的 URL 对应的视图函数。
视图函数可以通过模型从数据库中查询数据。
模型定义了数据结构和查询方式,负责和数据库打交道。
视图函数拿到数据后,渲染模板(通常是 HTML),最终通过 HTTP 响应返回给浏览器。
Django MVT 架构解密
Unlocking Django MVT Architecture
M
Model (模型)
数据读写
数据读写
V
View (视图)
业务中枢
业务中枢
T
Template (模板)
界面渲染
界面渲染
点击下方步骤或播放按钮,观察 Django MVT 各层职责。
Click steps or play button to observe Django MVT layers.
(3). Django框架介绍
Django 是一个高级 Python Web 框架,主打快速开发和简洁务实的设计风格。
它由经验丰富的开发者打造,已经帮你处理好了 Web 开发中大量繁琐的工作,让你可以专注于业务逻辑,不用重复造轮子。
Django 完全免费、开源。
被官方称之为完美主义者的Web框架。
用 Django 可以更快地开发出高质量的 Web 应用,同时代码量更少。
① Django框架的特点:
快速开发:Django 的目标就是帮你快速把想法变成可运行的应用。
安全可靠:Django 在安全方面下了很大功夫,能帮你规避许多常见的安全漏洞。
高度可扩展:许多大流量网站都在用 Django,充分证明了它灵活扩展的能力。
② Django使用Python版本
网址:https://www.djangoproject.com/download/#supported-versions

- Django的开发版本:
(3). Django的安装
① 使用Python3.12的版本:
Django 5.2 支持 Python 3.10、3.11、3.12 和 3.13。接下来我们将使用 Python 3.12。
如果你的 Python 版本低于 3.12,或者电脑上还没装 Python,请到 https://www.python.org/downloads/ 下载 Python 3.12 并安装。
python3 --version
python -V
# Python 3.12.9② 创建Python虚拟环境:
在开发 Python 应用时,我们经常会用到标准库以外的第三方包。不同项目可能需要同一个包的不同版本,但系统全局只能装一个版本。如果你为了某个项目升级了包的版本,可能会导致其他项目跑不起来。
为了解决这个问题,我们可以使用 Python 虚拟环境。虚拟环境会把 Python 包安装在一个隔离的目录里,不影响系统全局环境。每个虚拟环境都有自己独立的 Python 解释器和包目录,互不干扰。
为何需要 Python 虚拟环境?
Why Virtual Environments?
系统全局环境 (System Global Site-Packages)
📚Django 2.2
(App A 需要)
(App A 需要)
📦Django 5.2
(App B 需要)
(App B 需要)
🔗Requests 2.31
⚠️ 实验现象:在全局安装不同版本的同名包时,旧版本会被新版本直接覆盖,导致旧项目无法运行代码。
在系统全局环境中,不同项目依赖的不同版本包如果安装在一起,会发生冲突和覆盖。
In the global environment, installing different versions of the same package for different projects will cause conflicts and overwrites.
- 从 Python 3.3 开始,Python 就自带了
venv模块,可以方便地创建虚拟环境。
# 1. 创建虚拟环境
python -m venv my_env
# 2. 激活虚拟环境
# Linux下的激活虚拟环境
#source my_env/bin/activate
# Windows下的激活虚拟环境
.\my_env\Scripts\activate
#3. Linux下的验证激活
# (my_env) $ which python
# Windows下的验证激活
(my_env) PS> Get-Command python
# 4. 停用虚拟环境
(my_env) $ deactivate③ 安装Django
- 作为Python Web框架,Django需要Python,在安装Python同时需要安装pip。
# 在线安装Django,指定版本安装,目前5.2的最新版为5.2.9
python -m pip install django==5.2
# 默认会安装:Django==5.2.9、sqlparse==0.5.4、asgiref==3.11.0 和 tzdata==2025.3
# 可以使用pip list查看
# 检测当前是否安装Django及版本
python -m django --version
5.2.9
# 我们也可以先下载安装包:pip download django=4.2.18 -d ./二、Django的快速入门
第一步:项目的创建与运行
(1). 创建项目
如果你是第一次使用 Django,需要做一些初始配置。具体来说,就是用命令自动生成一个 Django 项目的基础代码和目录结构。
在命令行中,先切换到你想存放项目代码的目录,然后运行以下命令:
$ django-admin startproject myweb我们来看看startproject创建的内容:
[root@localhost myweb]# tree
myweb/
├── manage.py
└── myweb
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py自动生成的目录和文件说明如下:
最外层的 myweb/ 目录是项目的根目录,只是一个容器,名字跟 Django 没关系,你可以随意重命名。
manage.py:Django 项目的命令行管理工具,通过它可以执行各种项目管理操作(如启动服务器、数据库迁移等)。详细用法可参考官方文档。
内层的 myweb/ 目录是项目的 Python 包,里面放的是项目的核心配置。你在代码中导入时会用到这个包名(比如
myweb.urls)。myweb/init.py:一个空文件,告诉 Python 这个目录是一个 Python 包。
myweb/settings.py:项目的配置文件,所有 Django 设置都在这里。
myweb/urls.py:项目的 URL 路由配置,定义了网站的 URL 入口。
mysite/asgi.py:ASGI 协议的入口文件,用于部署异步 Web 服务器。
myweb/wsgi.py:WSGI 协议的入口文件,用于部署传统 Web 服务器。
(2). 运行开发服务器
接下来验证一下项目能不能正常运行。先切换到外层的 myweb 目录,然后执行以下命令:
$ python manage.py runserver你会在命令行中看到以下输出:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 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.
December 15, 2025 - 05:27:29
Django version 5.2.9, using settings 'myweb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.看到这些输出,说明 Django 的开发服务器已经启动了。这是一个用纯 Python 写的轻量级 Web 服务器,专门用于开发阶段,让你不用费心去配置 Apache 之类的生产服务器,就能快速预览效果。
现在在浏览器中打开
http://127.0.0.1:8000/,你应该会看到如下页面:

- 默认情况下,
runserver命令会在 8000 端口启动开发服务器。你也可以指定其他端口,比如 8080:
$ python manage.py runserver 8080- 如果要指定 IP 地址和端口,可以这样写:
$ python manage.py runserver 0.0.0.0:8000注意:通过IP访问后报如下错误:
DisallowedHost at /polls
Invalid HTTP_HOST header: '192.168.*.*:8000'. You may need to add '192.168.*.*' to ALLOWED_HOSTS.
HTTP_HOST标头无效:'192.168.*.*:8000'。您可能需要将"192.168.*.*"添加到ALLOWED_HOSTS
如:ALLOWED_HOSTS = ['192.168.104.240']
或:ALLOWED_HOSTS = ['192.168.104.240','localhost','127.0.0.1']
或支持所有 ALLOWED_HOSTS = ['*'](3). 附录:项目设置
打开 settings.py 文件,看看项目的配置。Django 在这个文件中预置了一些设置项,不过这只是所有可用配置的一部分。完整的设置列表和默认值可以参考 https://docs.djangoproject.com/en/5.2/ref/settings/。
下面介绍几个重要的设置项:
DEBUG:布尔值,用来开启或关闭调试模式。设为True时,应用抛出未捕获的异常会显示详细的错误页面,方便排查问题。部署到生产环境时,一定要设为False,否则会泄露敏感的项目信息。ALLOWED_HOSTS:调试模式开启或运行测试时,这个设置不生效。部署到生产环境并把DEBUG设为False后,你需要在这里添加允许访问的域名或 IP 地址。INSTALLED_APPS:这是每个项目都需要关注的设置,用来声明项目中启用了哪些应用。默认包含以下应用:django.contrib.admin:后台管理站点。django.contrib.auth:用户认证系统。django.contrib.contenttypes:内容类型框架。django.contrib.sessions:会话管理框架。django.contrib.messages:消息提示框架。django.contrib.staticfiles:静态文件管理框架,负责处理 CSS、JavaScript 和图片等静态资源。
MIDDLEWARE:中间件列表,定义了请求和响应处理过程中要执行的中间件。ROOT_URLCONF:指定项目根 URL 配置所在的 Python 模块。DATABASES:数据库配置字典,包含项目用到的所有数据库的连接信息。必须配置一个default数据库,默认使用 SQLite3。LANGUAGE_CODE:站点的默认语言。USE_TZ:是否启用时区支持。Django 默认支持带时区的日期时间。用startproject命令创建项目时,这个选项默认就是True。
第二步:应用的创建
"项目"和"应用"的关系: 在 Django 中,项目是一整套 Django 配置的集合;应用则是一个具体的功能模块,包含模型、视图、模板和 URL 配置。一个项目可以包含多个应用。

项目与应用的组装
Project & App Assembly
开发好的 App 模块卡
blog文章系统
forum讨论区
store商城模块
myweb (Project 母板)Power: ON
admin
auth
sessions
INSTALLED_APPS 卡槽
blog
Empty Slot
Empty Slot
# myweb/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'blog',
]交互:在此模拟“拖放插入”——点击左侧 App 卡片将其安装入项目的
INSTALLED_APPS 设定中。一个 Project 提供配置与环境底座,而具体业务功能由一个个独立的 App 承载。
A Project provides the configuration base, while independent Apps handle specific business logic. Plug them into settings to activate.
(1). 创建一个应用
Django 自带一个工具,能自动帮你生成应用的基本目录结构,省去手动建目录的麻烦。
确保你当前在 manage.py 所在的目录下,然后执行以下命令:
$ python manage.py startapp myapp- 命令执行后会创建一个 myapp 目录,结构如下:
[root@localhost demo]# tree myweb/
myweb/
├── manage.py
├── myweb
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── myapp
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py各文件的作用:
__init__.py:空文件,告诉 Python 把这个目录当作一个 Python 包。admin.py:在这里注册模型,把模型添加到 Django 后台管理界面。apps.py:应用的配置文件。migrations/:存放数据库迁移文件的目录。Django 通过迁移文件来追踪模型的变更,并同步到数据库。目录下默认有一个空的__init__.py。models.py:定义应用的数据模型。每个 Django 应用都必须有这个文件,但可以留空。tests.py:编写应用的测试代码。views.py:编写应用的视图逻辑。每个视图接收一个 HTTP 请求,处理后返回响应。
(2). 编写我们的第一个视图
- 来写第一个视图吧。打开 myapp/views.py,写入以下代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the myapp index.")这是 Django 中最简单的视图。要让这个视图能被访问到,我们需要给它配一个 URL,也就是创建一个 URLconf。
在 myapp 目录下新建一个 urls.py 文件。此时应用的目录结构如下:
└── myapp
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py- 在 myapp/urls.py 中写入以下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]- 接下来,需要在项目的根 URL 配置中引入 myapp 的 URL 配置。编辑 myweb/urls.py,导入
include函数,并在urlpatterns中添加一条记录:
from django.contrib import admin
from django.urls import include,path
urlpatterns = [
#path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')),
]include()函数的作用是引入其他应用的 URL 配置。注意include()中的 URL 模式末尾没有$(结束符),而是以斜杠结尾。Django 遇到include()时,会把已匹配的 URL 部分截掉,把剩余部分传给被引入的 URLconf 继续匹配。include()的设计思想是让 URL 配置可以"即插即用"。比如 myapp 应用有自己的 URLconf(myapp/urls.py),你可以把它挂在/myapp/下,也可以挂在/fun_myapp/或/content/myapp/下,应用本身的代码不需要做任何修改。注意:引入其他应用的 URL 配置时都应该用
include(),admin.site.urls是唯一的例外。
URL 到视图的路由接力赛
URL Routing Relay via Include
localhost:8000/
快速测试:
📦
myweb/urls.py
path('admin/', admin.site.urls)
path('blog/', include('blog.urls'))
path('myapp/', include('myapp.urls'))
path('admin/', admin.site.urls)
path('blog/', include('blog.urls'))
path('myapp/', include('myapp.urls'))
admin.urls
blog.urls
myapp.urls
404 Not Found路径 "" 无法匹配任何分拣条件。
交互:在输入框键入路径发往服务器,体验 Django URL 分发拦截机制。
请输入任意 URL 路径,观察 Django 主路由的分发过程。
Enter any URL path to observe the Django main router dispatch process.
- 现在 index 视图已经和 URL 配置关联好了。启动服务器来验证一下:
$ python manage.py runserver 0.0.0.0:8000- 在浏览器中打开 http://localhost:8000/myapp/,你应该能看到 "Hello, world. You're at the myapp index." 这段文字。
(3). 附录:path() 函数介绍
Django path() 可以接收四个参数,分别是两个必选参数:
route、view和两个可选参数:kwargs、name,接下来详细介绍这四个参数。route: URL 匹配模式字符串。处理请求时,Django 会从urlpatterns列表的第一条开始,逐个匹配请求的 URL,直到找到匹配项为止。
view: 匹配成功后要调用的视图函数。kwargs: 以字典形式传给视图函数的额外参数。name: 给这条 URL 规则取个名字,方便在代码中反向解析出 URL。
第三步:启用网站Admin管理
(1). 连接数据库的设置
默认情况下,Django 使用 SQLite 数据库。如果你想用其他数据库(如 MySQL、PostgreSQL),就需要额外配置 USER、PASSWORD、HOST 等参数。
其中 ENGINE 用来指定数据库引擎,Django 内置支持以下几种:
'django.db.backends.postgresql' 'django.db.backends.mysql' 'django.db.backends.sqlite3' 'django.db.backends.oracle' 在myweb/settings.py文件中,通过DATABASES项进行数据库设置,例如下面三种不同配置。
# SQLite数据库的连接配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 或PostgreSQL数据库的连接配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase', # 数据库名称
'USER': 'myuser', # 数据库用户名
'PASSWORD': 'mypassword', # 数据库密码
'HOST': 'localhost', # 数据库主机
'PORT': '5432', # 数据库端口
'CONN_MAX_AGE': 300, # 连接最大存活时间(秒)
'OPTIONS': {
'connect_timeout': 10, # 连接超时时间(秒)
'sslmode': 'require', # SSL模式(可选)
'application_name': 'myapp', # 应用名称
},
}
}
# 或MySQL数据库的连接配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydemo',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}注意:若Django使用PostgreSQL或MySQL数据库需要安装对应的Python模块。 接下来我们先使用Django自带的默认SQLite数据存储。
(2). 数据迁移
Django框架中有一个非常强大的应用功能--自动管理界面,常被Web平台管理者使用,去管理整个Web平台。
默认情况下,在settings.py配置文件中INSTALLED_APPS包含以下应用程序,这些应用程序都是由Django提供:
django.contrib.admin - 管理网站。你会很快使用它。 django.contrib.auth - 认证系统。 django.contrib.contenttypes - 内容类型的框架。 django.contrib.sessions - 会话框架 django.contrib.messages - 消息框架。 django.contrib.staticfiles - 管理静态文件的框架。 为了后续的开发,默认这些应用程序都是包含在里面的。
这些 Django 自带的应用需要对应的数据库表才能正常工作。运行以下命令来创建这些表(也叫"数据库迁移"):
$ python manage.py migratemigrate 命令会读取 INSTALLED_APPS 中的配置,根据 myweb/settings.py 中的数据库设置以及各应用的迁移文件,自动创建所需的数据库表。执行后你会看到每一步迁移的结果:
# 执行上面命令后的输出结果
$ 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
# 执行下面命令查看迁移状态,具体如下:
$ python manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial(2). 创建管理员用户
首先,我们需要创建一个可以登录管理站点的用户。运行以下命令:
$ python manage.py createsuperuser
# 输入用户名,然后按回车:
Username: admin
# 接着输入邮箱地址:
Email address: admin@example.com
# 最后输入密码(不少于8位),需要输入两次确认:
Password: **********
Password (again): *********
Superuser created successfully.(3). 启动开发服务器
Django 的后台管理站点默认就是启用的,直接启动服务器就能访问。
启动开发服务器命令如下:
$ python manage.py runserver
或
$ python manage.py runserver 0.0.0.0:8000现在,打开浏览器,访问 http://127.0.0.1:8000/admin/
使用刚刚创建的账号密码进行登录测试:

(4). 设置时区和语言:
编辑myweb/settings.py配置文件:
...
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
...刷新浏览器效果: 
第四步:应用中的模型
(1). 应用中创建模型
在我们的简单的应用程序中,去创建一个stu表信息操作的Model类。
编辑 myapp/models.py文件
from django.db import models
# Create your models here.
class Stu(models.Model):
'''自定义Stu表对应的Model类'''
#定义属性:默认主键自增id字段可不写
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16)
age = models.SmallIntegerField()
sex = models.CharField(max_length=1)
classid=models.CharField(max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)
# 自定义对应的表名,默认表名:myapp_stu
class Meta:
db_table="stu"模型到数据表的魔法映射
Magical Mapping from Model to Table
models.py
class Person(models.Model):
id = models.AutoField(primary_key=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
age = models.IntegerField()SQLite: myapp_person (Table)
| id (INT, PK) | first_name (VARCHAR) | last_name (VARCHAR) | age (INT) |
|---|---|---|---|
| 1 | John | Lennon | 40 |
| 2 | Paul | McCartney | 38 |
交互:左右拖拽上侧的**透视探测器滑块**,观察 Python 类属性是如何严格对齐并映射成 SQL 数据库表列的。
Django 引擎会自动将这些类与属性翻译转换成数据库中的二维表结构。
By sliding the X-ray scanner, you can see how Python Objects are automatically translated into Database Tables.
(2). 激活应用
要把这个应用纳入项目,需要在 INSTALLED_APPS 设置中添加应用的配置类。
MyappConfig 类定义在 myapp/apps.py 文件中,它的完整引用路径是 'myapp.apps.MyappConfig'。
编辑 myweb/settings.py,把这个路径添加到 INSTALLED_APPS 列表中:
INSTALLED_APPS = [
'django.contrib.admin' ,
'django.contrib.auth' ,
'django.contrib.contenttypes' ,
'django.contrib.sessions' ,
'django.contrib.messages' ,
'django.contrib.staticfiles' ,
'myapp.apps.MyappConfig', #或者直接写 myapp
](3). 应用数据库迁移
# 创建迁移文件,在myapp/migrations/目录下:
$ python manage.py makemigrations myapp
Migrations for 'myapp':
myapp/migrations/0001_initial.py
+ Create model Stu
# 执行应用迁移
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
# 查看迁移状态
python manage.py showmigrations(4). 把自定义应用添加到后台管理
创建好应用后,你会发现它还没有出现在后台管理页面上。我们需要手动注册一下。
打开 myapp/admin.py 文件,编辑代码如下:
from django.contrib import admin
from myapp.models import Stu
admin.site.register(Stu)一键生成自动管理后台
Instant Admin Generation
from django.contrib import admin
from .models import Person
admin.site.register(Person)Django Administration
Users
Groups
Persons
Select person to change
+ ADD PERSON
状态: 等待注册 (Awaiting)
仅需一行注册代码,Django Admin 会在后台为你瞬间搭建出一套高可用的数据管理 CRUD 界面。
With just one line of registry code, Django Admin instantly builds a fully functional CRUD interface for you.
启动服务:
$ python manage.py runserver
或
$ python manage.py runserver 0.0.0.0:8000现在,打开一个Web浏览器,访问地址: http://127.0.0.1:8000/admin/
在添加按钮即可对学生进行信息添加操作

(5). 更深入设计后台管理
# 编辑myapp/models.py文件,在Stu类中添加如下信息,让后台管理显示中文字段。
class Stu(models.Model):
'''自定义Stu表对应的Model类'''
#定义属性:默认主键自增id字段可不写
id = models.AutoField("学号",primary_key=True)
name = models.CharField("姓名",max_length=16)
age = models.SmallIntegerField("年龄")
sex = models.CharField("性别",max_length=1)
classid=models.CharField("班级",max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)
# 自定义对应的表名,默认表名:myapp_stu
class Meta:
db_table="stu"
verbose_name = '浏览学生信息'
verbose_name_plural = '学生信息管理'
# 编辑myapp/admin.py 文件,实现信息管理的个性化定制
from django.contrib import admin
# Register your models here.
from myapp.models import Stu
#Stu模型的管理器(装饰器写法)
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
#listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
list_display = ('id','name','age','sex','classid')
#设置哪些字段可以点击进入编辑界面
list_display_links = ('id','name')
#list_per_page设置每页显示多少条记录,默认是100条
list_per_page = 10
#ordering设置默认排序字段,负号表示降序排序
ordering = ('id',) #-id降序
#list_editable 设置默认可编辑字段
#list_editable = ['age','sex','classid']
#其他请详见手册文档说明(4). 在应用中使用模型(两种)
① 进入 Python 交互式 Shell,使用 Django 提供的 API 操作数据
C:\Users\张涛\Desktop\code\myweb>python manage.py shell
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.models import Stu
>>> mod = Stu.objects
# 获取所有信息
>>> lists = mod.all()
>>> for v in lists:
... print(v)
...
1:zhangsan:22:m:python03
2:lisi:25:w:python04
3:wangwu:20:m:python03
4:zhaoliu:19:w:python04
...
# 获取单条信息
>>> mod.get(id=1)
<Stu: 1:zhangsan:22:m:python03>
>>> mod.get(id=2)
<Stu: 2:lisi:25:w:python04>
>>> mod.get(id=3)
<Stu: 3:wangwu:20:m:python03>
>>>② 在myapp应用的视图中使用
# 文件:myapp/views.py 文件代码
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Stu
# Create your views here.
def index(request):
return HttpResponse("Hello Django!")
def stu(request):
#获取所有stu表信息
lists = Stu.objects.all()
print(lists)
#获取单条学生信息
print(Stu.objects.get(id=1))
return HttpResponse("ok")- 配置stu函数的访问路由
#在myapp/urls.py文件中配置
path('stu/', views.stu),启动服务后,在浏览器中访问,在命令行终端中查看输出效果: http://localhost:8000/myapp/stu


