【小学生都能看懂的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冷知识档案馆

  1. MTV模式:Django的Model-Template-View模式是MVC的变种

    • Model:数据模型(数据库结构)
    • Template:展示层(HTML模板)
    • View:业务逻辑(视图函数)
  2. 自带防御系统:自动防范SQL注入、XSS、CSRF等攻击

  3. ORM魔法:用Python类操作数据库,无需直接写SQL

    # 查询最近3篇文章
    recent_posts = Post.objects.all().order_by('-created_at')[:3]
    
  4. 信号系统:数据库操作前后可以触发自定义逻辑(像帝国的监听系统)

为什么选择Django?
当你要建造数字帝国时,它提供从地基到装修的全套方案,而不用自己烧砖砌墙

七、常见问题诊疗室

症状TemplateDoesNotExist错误
药方:检查settings.py中的TEMPLATES配置,确认模板路径正确

症状:数据库修改未生效
药方:记得每次修改模型后执行makemigrationsmigrate

症状:管理后台样式丢失
药方:运行python manage.py collectstatic收集静态文件

结语:从部落酋长到帝国统治者

现在你已经掌握:
✅ Django的项目架构设计
✅ 模型与数据库的交互
✅ 视图与模板的配合
✅ 管理后台的快速搭建

当你能用几小时搭建起功能完整的博客系统时,就真正体会到了"Django让完美主义者有截止日期"的真谛。记住,Django就像你的数字帝国建造模拟器——只要掌握核心机制,就能快速扩展疆域。

下期预告:《SQLite——小而美的数据存储:Python程序员的口袋数据库》


课后彩蛋:在模型中添加以下字段:

is_published = models.BooleanField(default=False)
# 然后在视图中过滤已发布文章
Post.objects.filter(is_published=True)
# 体验Django ORM的查询魔法
用户请求 → URL路由 → 视图处理 → 模型操作 → 模板渲染 → 返回响应
posted @   爱上编程技术  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示