当前位置: 首页 > news >正文

Django 入门详解:从零开始构建你的第一个 Web 应用

Django 是一个高级的 Python Web 框架,鼓励快速开发和干净、实用的设计。它遵循“不要重复造轮子(Don't Repeat Yourself, DRY)”的原则,内置了诸如用户认证、内容管理、表单处理等常见功能,非常适合构建内容驱动的网站。

本文将带你从零开始,逐步了解 Django 的基本概念、项目结构、视图、模板、模型、路由等核心内容,并通过一个简单的博客应用示例,帮助你快速上手 Django 开发。


一、Django 简介

1. 什么是 Django?

Django 是一个由 Python 编写的开源 Web 框架,采用 MTV(Model-Template-View) 架构模式:

  • Model(模型):负责与数据库交互,定义数据结构。
  • Template(模板):负责展示层,即 HTML 页面。
  • View(视图):处理业务逻辑,决定将哪些数据展示给模板。

2. Django 的特点

  • 快速开发:内置大量实用功能,减少重复开发。
  • 安全性强:自动防御常见的安全漏洞(如 XSS、CSRF)。
  • 可扩展性高:支持多数据库、缓存、中间件等高级功能。
  • 社区活跃:拥有庞大的社区和丰富的第三方库。

二、安装 Django

1. 安装 Python 环境

确保你已安装 Python 3.8+,可以通过以下命令检查:

python --version

2. 创建虚拟环境(推荐)

python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

也可以使用conda

3. 安装 Django

pip install django

验证是否安装成功:

python -m django --version

三、创建你的第一个 Django 项目

1. 创建项目

django-admin startproject mysite
cd mysite

目录结构如下:

mysite/
├── manage.py
└── mysite/├── __init__.py├── settings.py├── urls.py└── wsgi.py

2. 启动开发服务器

python manage.py runserver

访问 http://127.0.0.1:8000/,看到 Django 的欢迎页面表示项目创建成功。


四、创建第一个应用(App)

Django 鼓励将功能模块化,一个项目可以包含多个应用(App)。

1. 创建应用

python manage.py startapp blog

目录结构如下:

blog/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py

2. 注册应用

打开 mysite/settings.py,在 INSTALLED_APPS 中添加:

INSTALLED_APPS = [...'blog',
]

五、编写第一个视图(View)

blog/views.py 中添加:

from django.http import HttpResponsedef index(request):return HttpResponse("欢迎来到我的博客!")

配置 URL 路由

  1. blog 目录下创建 urls.py
# blog/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),
]
  1. 在主项目的 urls.py 中包含:
# mysite/urls.py
from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),
]

现在访问 http://127.0.0.1:8000/blog/,你会看到页面显示“欢迎来到我的博客!”。


六、使用模板(Template)

1. 创建模板目录

blog 应用下创建 templates/blog/ 目录:

blog/
└── templates/└── blog/└── index.html

index.html 中写入:

<!DOCTYPE html>
<html><head><title>我的博客</title></head><body><h1>欢迎来到我的博客!</h1></body>
</html>

2. 修改视图使用模板

# blog/views.py
from django.shortcuts import renderdef index(request):return render(request, 'blog/index.html')

刷新页面,你会看到渲染后的 HTML 页面。


七、使用模型(Model)管理数据

1. 定义模型

blog/models.py 中定义一个博客文章模型:

from django.db import modelsclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()pub_date = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title

2. 生成迁移文件

bash深色版本python manage.py makemigrations

3. 应用迁移

python manage.py migrate

4. 注册模型到 Admin

blog/admin.py 中注册模型:

from django.contrib import admin
from .models import Postadmin.site.register(Post)

5. 创建超级用户

python manage.py createsuperuser

登录 http://127.0.0.1:8000/admin,你可以添加、编辑、删除博客文章。


八、展示数据库中的数据

1. 修改视图,展示所有文章

def index(request):posts = Post.objects.all()return render(request, 'blog/index.html', {'posts': posts})

2. 修改模板,显示文章列表

<!-- blog/index.html -->
<h1>我的博客</h1>
<ul>{% for post in posts %}<li>{{ post.title }} - {{ post.pub_date }}</li>{% endfor %}
</ul>

九、总结

通过本文,你已经完成以下内容:

  • 创建了一个 Django 项目和应用
  • 编写了第一个视图并配置了 URL 路由
  • 使用模板渲染 HTML 页面
  • 定义模型并与数据库交互
  • 使用 Admin 管理后台
  • 查询并展示数据库中的数据

这只是 Django 的冰山一角。接下来可以学习:

  • 表单处理(Form)
  • 用户认证(Authentication)
  • REST API(使用 Django REST Framework)
  • 部署到生产环境(如 Nginx + Gunicorn)

十、推荐学习路径

  1. 官方文档:Django documentation | Django documentation | Django
  2. 推荐书籍:
    • 《Django for Beginners》
    • 《Django for APIs》
  1. 推荐项目练习:
    • 博客系统
    • 任务管理系统
    • 电商网站

附录:常用命令汇总

命令

说明

django-admin startproject

创建项目

python manage.py startapp

创建应用

python manage.py runserver

启动开发服务器

python manage.py makemigrations

生成迁移文件

python manage.py migrate

应用迁移

python manage.py createsuperuser

创建管理员用户

python manage.py shell

进入 Django Shell

python manage.py test

运行测试

http://www.dtcms.com/a/293978.html

相关文章:

  • YOLOv5模型剪枝实战教程
  • 从8h到40min的极致并行优化:Spark小数据集UDTF处理的深度实践与原理剖析
  • 分布式系统中的缓存设计与应用
  • 前端实现可编辑脑图的方案
  • 一洽客服系统:小程序接入功能说明
  • 关于单片机的无符号整型uint32_x
  • 代码随想录算法训练营第五十二天|图论part3
  • 使用 gh-pages 将 next.js15 静态项目部署到 github pages
  • 重磅发布:Oracle ADG 一键自动化搭建脚本
  • OceanBase数据库
  • 如何在macOS上修改iPhone的定位
  • Qt 自定义控件开发方法与实践
  • cx_Freeze python 打包详解
  • Qt 数据QByteArray与QString处理与转换全指南
  • QT的moveToThread 用法
  • Java按模板导出Excel
  • LoRA 低秩矩阵实现参数高效的权重更新
  • 2025 ACT 汽车功能安全相关PPT分享
  • 《计算机网络》实验报告七 HTTP协议分析与测量
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题汇总版,持续更新学习,加油!!!
  • 场效应管和模电的关于、学习
  • 【盘古100Pro+开发板实验例程】FPGA | Modelsim 的使用和 do 文件编写
  • SpringBoot 使用Rabbitmq
  • rust嵌入式开发零基础入门教程(一)
  • FSHNet:高效目标检测新突破
  • rust嵌入式开发零基础入门教程(五)
  • Python应用指南:构建和获取全球地铁线路数据及可视化
  • HarmonyOS学习记录5
  • 【形态学变换】——图像预处理(OpenCV)
  • (nice!!!)(LeetCode 每日一题) 1717. 删除子字符串的最大得分 (贪心)