【小学生都能看懂的Python入门教程】第七章:Django 巨人肩膀上的开发:用Python建造数字帝国
Django 巨人肩膀上的开发:用Python建造数字帝国
一、Django简介:Web界的瑞士军刀
1. 自带全家桶的全能战士
Django是一个"开箱即用"的全栈框架,就像:
- 精装修的别墅:拎包入住,无需从打地基开始
- 乐高豪华套装:附带说明书和所有必要零件
- 数字瑞士军刀:内置用户系统、ORM、后台管理等功能
核心优势:
# Django的隐藏超能力清单
superpowers = [
"自动生成管理后台",
"自带安全防护盾",
"ORM数据库翻译官",
"可扩展的插件体系",
"SEO友好URL设计"
]
2. 著名用户案例
- Instagram(月活10亿+)
- NASA官网
- 华盛顿邮报
- Spotify
冷知识:Django名字来自爵士吉他手Django Reinhardt,寓意"让Web开发像即兴演奏一样流畅"
二、安装Django:给你的机器装上帝国引擎
1. 创建专属帝国(虚拟环境)
python -m venv django_empire # 建立帝国地基
source django_empire/bin/activate # 进入帝国领域(Windows用`django_empire\Scripts\activate`)
2. 安装帝国核心
pip install django
安装过程小剧场:
你:按下回车
电脑:正在下载帝国建设工具包…
Django:安装完成!获得成就【帝国架构师】
三、创建Django帝国:从蓝图到宫殿
1. 绘制帝国版图(创建项目)
django-admin startproject blog_empire # 创建帝国首都
cd blog_empire
python manage.py startapp posts # 建立行政区(应用)
2. 帝国文件结构解密
blog_empire/
├── blog_empire/ # 帝国首都核心区
│ ├── __init__.py
│ ├── settings.py # 帝国法律
│ ├── urls.py # 交通路线图
│ └── wsgi.py # 外交接口
├── posts/ # 行政区(博客应用)
│ ├── migrations/ # 移民局(数据库变更记录)
│ └── models.py # 人口普查局
└── manage.py # 帝国管理终端
四、实战演练:博客帝国建设计划
1. 定义帝国公民(模型)
# posts/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100) # 文章标题
content = models.TextField() # 内容
created_at = models.DateTimeField(auto_now_add=True) # 创建时间
def __str__(self):
return self.title # 在后台显示友好名称
2. 生成移民记录(数据库迁移)
python manage.py makemigrations # 生成迁移文件
python manage.py migrate # 应用迁移
3. 创建帝国管理后台
# posts/admin.py
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'created_at') # 后台列表显示字段
# 访问/admin即可进入帝国管理中心
4. 设计帝国街道(URL路由)
# blog_empire/urls.py
from django.urls import path
from posts import views
urlpatterns = [
path('', views.post_list, name='home'), # 首页路由
path('post/<int:pk>/', views.post_detail, name='post_detail'),
]
5. 训练帝国公务员(视图函数)
# posts/views.py
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'posts/list.html', {'posts': posts})
def post_detail(request, pk):
post = Post.objects.get(pk=pk)
return render(request, 'posts/detail.html', {'post': post})
6. 建造帝国建筑(模板)
<!-- posts/templates/posts/list.html -->
<!DOCTYPE html>
<html>
<head>
<title>博客帝国</title>
</head>
<body>
<h1>帝国公告栏</h1>
{% for post in posts %}
<article>
<h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></h2>
<time>{{ post.created_at|date:"Y-m-d" }}</time>
</article>
{% endfor %}
</body>
</html>
五、启动帝国服务器
python manage.py runserver # 启动帝国引擎
访问以下地址:
- http://localhost:8000 (博客首页)
- http://localhost:8000/admin (管理后台,需先创建超级用户)
创建超级用户:
python manage.py createsuperuser
# 按照提示输入用户名、邮箱和密码
六、Django冷知识档案馆
-
MTV模式:Django的Model-Template-View模式是MVC的变种
- Model:数据模型(数据库结构)
- Template:展示层(HTML模板)
- View:业务逻辑(视图函数)
-
自带防御系统:自动防范SQL注入、XSS、CSRF等攻击
-
ORM魔法:用Python类操作数据库,无需直接写SQL
# 查询最近3篇文章 recent_posts = Post.objects.all().order_by('-created_at')[:3]
-
信号系统:数据库操作前后可以触发自定义逻辑(像帝国的监听系统)
为什么选择Django?
当你要建造数字帝国时,它提供从地基到装修的全套方案,而不用自己烧砖砌墙
七、常见问题诊疗室
症状:TemplateDoesNotExist
错误
药方:检查settings.py中的TEMPLATES配置,确认模板路径正确
症状:数据库修改未生效
药方:记得每次修改模型后执行makemigrations
和migrate
症状:管理后台样式丢失
药方:运行python manage.py collectstatic
收集静态文件
结语:从部落酋长到帝国统治者
现在你已经掌握:
✅ Django的项目架构设计
✅ 模型与数据库的交互
✅ 视图与模板的配合
✅ 管理后台的快速搭建
当你能用几小时搭建起功能完整的博客系统时,就真正体会到了"Django让完美主义者有截止日期"的真谛。记住,Django就像你的数字帝国建造模拟器——只要掌握核心机制,就能快速扩展疆域。
下期预告:《SQLite——小而美的数据存储:Python程序员的口袋数据库》
课后彩蛋:在模型中添加以下字段:
is_published = models.BooleanField(default=False)
# 然后在视图中过滤已发布文章
Post.objects.filter(is_published=True)
# 体验Django ORM的查询魔法
用户请求 → URL路由 → 视图处理 → 模型操作 → 模板渲染 → 返回响应
代码学习,前言技术分享,深度分析编程技术,普及科普编程技术,天天都要敲代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)