Django 视图和请求对象
【摘要】 Django 视图和请求对象目标:从零新建项目,跑通“浏览器一点按钮 → 视图函数 → 往数据库插书”的完整链路。 为什么要重新建项目在真实开发里,每次迭代或练习新功能都建议“另起炉灶”,避免旧代码、旧迁移文件互相干扰。因此我们新建 bookmanager03,并把上午的数据库配置、MySQL 驱动安装全部复制过来,只改库名即可。这样既保证环境干净,又能让同学们反复练习“从 0 到 1”的...
Django 视图和请求对象
目标:从零新建项目,跑通“浏览器一点按钮 → 视图函数 → 往数据库插书”的完整链路。
为什么要重新建项目
在真实开发里,每次迭代或练习新功能都建议“另起炉灶”,避免旧代码、旧迁移文件互相干扰。因此我们新建 bookmanager03,并把上午的数据库配置、MySQL 驱动安装全部复制过来,只改库名即可。这样既保证环境干净,又能让同学们反复练习“从 0 到 1”的完整流程,形成肌肉记忆。
1️⃣ 新建项目 & 子应用(一口气敲完)
# 终端 1:新建项目 bookmanager03
workon py42
django-admin startproject bookmanager03
cd bookmanager03
python manage.py startapp book
python manage.py startapp person # 一个工程可挂多个 app
2️⃣ 必做的 3 件事
事项 | 指令 / 动作 |
---|---|
注册子应用 | bookmanager03/settings.py → INSTALLED_APPS += ['book', 'person'] |
改 MySQL 配置 | 复制之前的 DATABASES 字典,库名改为 book_42_03 |
创建库 | mysql -uroot -p → CREATE DATABASE book_42_03 charset=utf8mb4; |
3️⃣ 一键跑通环境
python manage.py makemigrations
python manage.py migrate
python manage.py runserver # 浏览器立刻可见 “火箭” 页面
再来回忆一下这三条命令
-
python manage.py makemigrations
扫描所有models.py
的改动,把“模型差异”写成 迁移文件(migrations/000x_xxx.py
)。
→ 相当于“拍照记录”:告诉 Django “我准备这样改表结构”。 -
python manage.py migrate
把上一步生成的迁移文件翻译成 真正的 SQL,并提交给数据库执行。
→ 相当于“按图纸施工”:真正把表建好/改好。 -
python manage.py runserver
启动 Django 自带的 迷你 Web 服务器(默认127.0.0.1:8000
)。
→ 相当于“开灯营业”:浏览器就能访问项目了。
先快照 → 再施工 → 最后开门。
4️⃣ 视图函数 + 路由(最小可运行版)
book/views.py
from django.http import HttpResponse
from book.models import BookInfo
def create(request):
# 浏览器 GET /create/ 时,直接往数据库插一条测试数据
BookInfo.objects.create(
name='ABCD',
pub_date='2000-01-01',
read_count=10
)
return HttpResponse("已新增书籍 ABCD")
book/urls.py(新建)
from django.urls import path
from . import views
urlpatterns = [
path('create/', views.create),
]
bookmanager03/urls.py(总路由)
from django.urls import path, include
urlpatterns = [
path('', include('book.urls')),
]
5️⃣ 浏览器验证
http://127.0.0.1:8000/create/ # 刷新一次多一条记录
后台实时查看:
python manage.py shell
>>> BookInfo.objects.last().name
'ABCD'
6️⃣ 今日重点
-
create 视图演示了“请求 → 数据库”的最短链路。
-
Paginator 下周项目实战再展开。
记住口诀:
“项目三件套:新建→改配置→migrate;视图三步:写函数→配路由→runserver。”
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)