Django 视图和请求对象

举报
周杰伦本人 发表于 2025/08/31 20:27:35 2025/08/31
【摘要】 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.pyINSTALLED_APPS += ['book', 'person']
改 MySQL 配置 复制之前的 DATABASES 字典,库名改为 book_42_03
创建库 mysql -uroot -pCREATE DATABASE book_42_03 charset=utf8mb4;

3️⃣ 一键跑通环境

python manage.py makemigrations
python manage.py migrate
python manage.py runserver        # 浏览器立刻可见 “火箭” 页面

再来回忆一下这三条命令

  1. python manage.py makemigrations
    扫描所有 models.py 的改动,把“模型差异”写成 迁移文件migrations/000x_xxx.py)。
    → 相当于“拍照记录”:告诉 Django “我准备这样改表结构”。

  2. python manage.py migrate
    把上一步生成的迁移文件翻译成 真正的 SQL,并提交给数据库执行。
    → 相当于“按图纸施工”:真正把表建好/改好。

  3. 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。