当前位置: 首页 > 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.lryc.cn/news/597552.html

相关文章:

  • 【C++】C++ 的入门知识2
  • 今日行情明日机会——20250723
  • 使用JMeter进行压力测试(以黑马点评为例、详细图解)
  • Flex布局与边距计算
  • 视频、音频录制
  • 使用Docker搭建SearXNG搜索引擎
  • 从0开始学习R语言--Day55--弹性网络
  • DIOR-ViT:用于病理图像癌症分类的差分序数学习视觉Transformer|文献速递-医学影像算法文献分享
  • 9、STM32的启动过程
  • VSCODE 禁用git 功能
  • Deep learning--模型压缩的五种方法
  • DenseNet详解,附模型代码(pytorch)
  • 扫描电镜与透射电镜联用表征形貌与元素组成-测试GO
  • 【OD机试】数列构造
  • 智能Agent场景实战指南 Day 19:Agent工具使用与API调用
  • 网安-JWT
  • 1、黑马点评复盘(短信登录-Session或Redis实现)
  • BUUCTF(web)部分题解
  • Redis 的事务机制是怎样的?
  • 模仿学习(Imitation Learning, IL)和监督学习(Supervised Learning, SL)区别
  • Python--Tkinter--标准 GUI 工具包
  • STL学习(?函数对象,谓词,内建函数对象)
  • Hexo - 免费搭建个人博客05 - 更新个人博客
  • DAY 22 复习日
  • 【提示词技巧】高级提示方法与框架
  • 第七章 Pytorch构建模型详解【构建CIFAR10模型结构】
  • 【WRF】根据自动安装脚本安装 WRF / WRF-CHEM等
  • Google Chrome V8< 14.0.221 类型混淆漏洞
  • linux中如何清除history命令
  • IAR Embedded Workbench for ARM 8.1 安装教程