创建一个django项目
Django 详细介绍
Django 是一个高级 Python Web 框架,用于快速开发安全、可扩展的网站和 Web 应用程序。它遵循 MVT(Model-View-Template) 架构模式(类似于 MVC),并提供了许多内置功能,如 ORM(对象关系映射)、认证系统、管理后台等,使开发者可以专注于业务逻辑而非底层实现。
1. Django 的核心特点
(1)全栈式框架
Django 提供了构建 Web 应用所需的大部分组件:
-
ORM(对象关系映射):用 Python 类定义数据库模型,无需直接写 SQL。
-
模板引擎:动态生成 HTML,支持模板继承和过滤器。
-
表单处理:自动生成表单,验证用户输入。
-
认证系统:用户注册、登录、权限管理。
-
Admin 后台:自动生成管理界面,方便管理数据。
-
路由系统:URL 映射到视图函数/类。
-
中间件:处理请求/响应的全局逻辑(如 CSRF 防护)。
(2)DRY(Don't Repeat Yourself)原则
Django 鼓励代码复用,减少重复代码,提高开发效率。
(3)安全性
-
CSRF(跨站请求伪造)防护:自动处理表单安全。
-
XSS(跨站脚本攻击)防护:默认转义模板变量。
-
SQL 注入防护:ORM 自动转义 SQL 查询。
-
用户密码哈希存储:避免明文存储密码。
(4)可扩展性
-
支持 缓存(Redis、Memcached)。
-
支持 异步任务(Celery、Django Channels)。
-
支持 REST API(Django REST Framework)。
(5)丰富的生态系统
-
Django REST Framework (DRF):构建 RESTful API。
-
Django CMS:内容管理系统。
-
Django Allauth:社交账号登录(Google、GitHub 等)。
-
Django Celery:异步任务处理。
2. Django 的架构(MVT 模式)
Django 使用 Model-View-Template(MVT) 架构:
组件 | 作用 |
---|---|
Model | 定义数据结构(数据库表),通过 ORM 操作数据库 |
View | 处理业务逻辑(类似 MVC 中的 Controller) |
Template | 渲染 HTML 页面(类似 MVC 中的 View) |
工作流程:
-
用户请求 → URL 路由 → 匹配对应的 View。
-
View 处理请求,可能查询 Model(数据库)。
-
View 返回数据给 Template 渲染 HTML。
-
最终 HTML 返回给用户。
3. Django 的安装与基本使用
(1)安装 Django
pip install django
(2)创建 Django 项目
django-admin startproject myproject
项目结构:
text
复制
下载
myproject/ │ ├── manage.py # 项目管理脚本 └── myproject/├── __init__.py├── settings.py # 项目配置(数据库、静态文件等)├── urls.py # 主路由配置└── wsgi.py # WSGI 服务器配置└── asgi.py # ASGI 服务器配置
(3)运行开发服务器
python manage.py runserver
访问 http://127.0.0.1:8000/
可以看到 Django 欢迎页面。
4. 创建一个简单的 Django 应用
(1)创建应用
python manage.py startapp myapp
应用结构:
myapp/ │ ├── migrations/ # 数据库迁移文件 ├── __init__.py ├── admin.py # 注册模型到 Admin 后台 ├── apps.py # 应用配置 ├── models.py # 定义数据模型 ├── tests.py # 单元测试 └── views.py # 视图函数
(2)定义 Model(数据库表)
# myapp/models.py
from django.db import modelsclass Blog(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
(3)生成并应用数据库迁移
python manage.py makemigrations
python manage.py migrate
(4)创建 View(业务逻辑)
# myapp/views.py
from django.shortcuts import render
from .models import Blogdef blog_list(request):blogs = Blog.objects.all()return render(request, "blog_list.html", {"blogs": blogs})
(5)创建 Template(HTML 页面)
<!-- myapp/templates/blog_list.html -->
<!DOCTYPE html>
<html>
<head>&