🏛️ Django:全功能 Web 框架
Django 是一个功能强大的 Web 开发框架,适合构建中大型网站和系统,提供内建的 ORM、用户认证、后台管理等。
✅ Django 解决了什么问题?
Flask 更轻量,适合微服务或快速原型。而 Django 提供了“全家桶”功能:
功能 | 描述 |
---|---|
URL 路由系统 | 定义 URL 与视图函数的映射 |
模板引擎 | HTML 动态渲染支持 |
ORM | 不写 SQL 也能操作数据库 |
用户系统 | 内建认证、登录、权限管理 |
后台管理 | 自动生成后台界面,无需单独写管理页面 |
配置系统 | 配置分离、支持多环境管理 |
⚙ 安装 Django
pip install django
📝 创建 Django 项目
django-admin startproject mysite
cd mysite
python manage.py runserver
浏览器访问:http://127.0.0.1:8000/
📁 项目结构说明
mysite/
├── manage.py
├── mysite/
│ ├── __init__.py
│ ├── settings.py ← 配置文件
│ ├── urls.py ← 路由表
│ └── wsgi.py
🏗️ 创建应用(App)
python manage.py startapp blog
然后在 settings.py
中注册该应用:
INSTALLED_APPS = [
'blog',
...
]
📄 路由与视图函数
定义 blog/views.py
:
从 django.http 导入 HttpResponse
定义 首页(请求):
返回 HttpResponse("欢迎来到博客首页")
在 blog/urls.py
中添加:
从 django.urls 导入 path
从 . 导入 视图
urlpatterns = [
path("", 视图.首页),
]
再将其包含到项目主路由中 mysite/urls.py
:
从 django.urls 导入 include, path
urlpatterns = [
path("博客/", include("blog.urls")),
]
🧱 使用模板渲染 HTML
目录结构:
blog/
└── templates/
└── blog/
└── index.html
模板文件 index.html
:
<h1>欢迎,{{ user }}</h1>
视图渲染模板:
从 django.shortcuts 导入 渲染
定义 首页(请求):
返回 渲染(请求, "blog/index.html", {"user": "小明"})
🧮 Django ORM 数据模型
在 blog/models.py
中定义模型:
从 django.db 导入 models
类 文章(models.Model):
标题 = models.CharField(max_length=100)
正文 = models.TextField()
创建时间 = models.DateTimeField(auto_now_add=True)
迁移数据库:
python manage.py makemigrations
python manage.py migrate
🧑💻 Django Admin 后台管理
创建超级用户:
python manage.py createsuperuser
注册模型 blog/admin.py
:
从 django.contrib 导入 admin
从 .模型 导入 文章
admin.site.register(文章)
访问后台:http://127.0.0.1:8000/admin
📦 Django 表单处理
自动生成表单类:
python manage.py startapp accounts
定义表单类 forms.py
:
从 django 导入 forms
类 登录表单(forms.Form):
用户名 = forms.CharField(label="用户名")
密码 = forms.CharField(widget=forms.PasswordInput)
⚙ Django 常用命令表
命令 | 功能 |
---|---|
startproject | 创建新项目 |
startapp | 创建应用 |
runserver | 启动开发服务器 |
makemigrations | 生成迁移文件 |
migrate | 应用数据库迁移 |
createsuperuser | 创建后台管理员 |
shell | 打开交互式环境 |