Django 讲解
目录
- 什么是 Django?
- Django 的核心特点
- Django 环境搭建与安装
- 安装 Django
- 创建 Django 项目
- Django 的基本概念
- 项目与应用的关系
- MVT(模型-视图-模板)架构
- 构建一个简单的 Django 应用
- 创建并配置应用
- 配置数据库
- 构建模型(Models)
- 编写视图(Views)
- 创建模板(Templates)
- 配置 URL
- 数据库操作与 Django 管理后台
- 使用 Django 构建动态网页
- 部署 Django 项目
- 总结
1. 什么是 Django?
Django 是一个基于 Python 的 Web 框架,旨在让开发人员能够快速构建功能强大、安全且可扩展的 Web 应用程序。它采用了 “Don’t Repeat Yourself”(DRY,别重复自己)的开发原则,让开发者能够更专注于应用逻辑而不是基础设施建设。
简而言之,Django 是一款工具,它帮助开发人员用更少的代码实现更多功能,非常适合从简单的博客到复杂的企业级网站开发。
2. Django 的核心特点
- 快速开发:Django 提供了开箱即用的功能,如认证系统、管理界面等,减少了开发时间。
- 内置管理后台:Django 提供了一个自动生成的管理后台,非常适合数据管理和测试。
- 安全性高:Django 内置防护功能,能有效避免常见的安全问题,如 SQL 注入和跨站脚本攻击。
- 丰富的社区和文档:Django 拥有庞大的社区和详尽的文档,容易查找解决方案和问题。
- 高可扩展性:Django 采用模块化设计,支持插件扩展和集成第三方库,非常灵活。
3. Django 环境搭建与安装
安装 Django
-
创建虚拟环境(推荐):
- 首先确保你已经安装了
pip
(Python 的包管理工具)和virtualenv
(虚拟环境工具)。 - 创建虚拟环境:
python -m venv myenv
- 激活虚拟环境:
- Windows:
myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
- Windows:
- 首先确保你已经安装了
-
安装 Django:
- 使用
pip
安装最新版本的 Django:pip install django
- 验证安装是否成功:
django-admin --version
- 使用
创建 Django 项目
-
创建项目:
- 使用
django-admin
创建一个新的项目:django-admin startproject myproject
- 这会创建一个名为
myproject
的目录,里面包含了 Django 项目结构的基本文件。
- 使用
-
运行项目:
- 进入项目目录:
cd myproject
- 启动开发服务器:
python manage.py runserver
- 打开浏览器访问
http://127.0.0.1:8000/
,你会看到 Django 的欢迎页面,表明项目创建成功。
- 进入项目目录:
4. Django 的基本概念
项目与应用的关系
- 项目:Django 项目是一个完整的 Web 网站,由多个应用组成。
- 应用:应用是项目的一个模块或组件,可以是独立的功能部分。例如,一个博客项目可能会有
blog
应用来处理文章,user
应用来管理用户。
MVT(模型-视图-模板)架构
Django 采用了 MVT 设计模式,类似于传统的 MVC(模型-视图-控制器),但有所不同。
- Model(模型):表示数据和数据库逻辑,用于定义数据结构(表)。
- View(视图):处理业务逻辑,接收请求,返回响应。可以是渲染的 HTML 页面、API 数据等。
- Template(模板):负责显示数据,用于定义页面的 HTML 模板。
5. 构建一个简单的 Django 应用
创建并配置应用
-
创建应用:
- 使用
manage.py
创建一个新的应用:python manage.py startapp blog
- 这会创建一个名为
blog
的目录,其中包含应用的基本文件。
- 使用
-
配置应用:
- 打开
myproject/settings.py
,找到INSTALLED_APPS
列表,添加新创建的blog
应用:INSTALLED_APPS = [...'blog', ]
- 打开
配置数据库
Django 默认使用 SQLite 数据库。你可以在 settings.py
中配置其他数据库,如 MySQL 或 PostgreSQL。
构建模型(Models)
在 blog/models.py
中定义一个简单的文章模型:
from django.db import modelsclass Article(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
models.CharField
:定义一个字符串字段。models.TextField
:定义一个文本字段。models.DateTimeField
:日期时间字段,auto_now_add=True
表示自动设置为创建时间。
编写视图(Views)
在 blog/views.py
中编写一个简单的视图函数来展示文章列表:
from django.shortcuts import render
from .models import Articledef article_list(request):articles = Article.objects.all()return render(request, 'blog/article_list.html', {'articles': articles})
创建模板(Templates)
在 blog
目录下创建一个 templates/blog
文件夹,并在其中创建 article_list.html
文件:
<!DOCTYPE html>
<html>
<head><title>文章列表</title>
</head>
<body><h1>文章列表</h1><ul>{% for article in articles %}<li>{{ article.title }} - {{ article.created_at }}</li>{% endfor %}</ul>
</body>
</html>
配置 URL
在 blog
应用中创建一个 urls.py
文件,定义 URL 路由:
from django.urls import path
from .views import article_listurlpatterns = [path('', article_list, name='article_list'),
]
然后在项目的 myproject/urls.py
中包含 blog
应用的 URL:
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('blog/', include('blog.urls')),
]
现在你可以访问 http://127.0.0.1:8000/blog/
查看文章列表页面。
6. 数据库操作与 Django 管理后台
数据库迁移
Django 提供了内置工具来同步模型和数据库:
- 生成迁移文件:
python manage.py makemigrations
- 应用迁移:
python manage.py migrate
使用 Django 管理后台
- 创建超级用户(管理员账户):
python manage.py createsuperuser
- 访问管理后台:
- 启动开发服务器,访问
http://127.0.0.1:8000/admin/
。 - 使用刚才创建的超级用户账号登录,管理后台允许你直接操作模型数据。
- 启动开发服务器,访问
7. 使用 Django 构建动态网页
通过 Django,可以轻松构建包含动态内容的网页。使用表单、模板过滤器、分页等功能,可以将用户输入与数据库数据集成,构建更复杂的应用。
示例:创建一个简单的表单
在 views.py
中创建一个视图来处理用户提交的表单数据,并返回不同的响应。
示例:分页功能
Django 提供了内置的分页工具,可以轻松实现内容的分页展示。
8. 部署 Django 项目
在本地开发完成后,可以将项目部署到线上服务器。
常见的部署方式包括使用 Gunicorn 作为 WSGI 服务器,搭配 Nginx 或 Apache 作为反向代理。
步骤简述
- 安装部署工具(如 Gunicorn)。
- 配置数据库(推荐使用 PostgreSQL)。
- 配置静态文件与媒体文件的路径。
- 通过 Docker 容器化部署(可选)。
- 使用 Nginx 进行反向代理配置。
9. 总结
Django 是一个功能强大的 Python Web 框架,适合从小型个人项目到大型企业应用的开发。它的 MVT 架构让开发变得更加清晰和高效,同时内置的管理后台和数据库工具让开发者能够专注于业务逻辑的实现。
希望这个讲解能帮助你理解 Django 的基本概念和开发流程。如果你有任何具体的问题或需要更深入的实例,请随时告诉我!