Django 快速上手
Web 基础
核心术语
| 术语 | 说明 |
|---|---|
| URL/URI | 网络资源唯一标识 |
| DNS | 域名 → IP 地址解析 |
| HTTP | 超文本传输协议,浏览器与服务器通信的基础 |
| Web 服务器 | 接收请求,返回 HTML/文件等资源 |
| 反向代理 | 代理客户端请求,Nginx 常用作反向代理 |
HTTP 请求/响应结构
HTTP 请求:请求行 + 请求头 + 空行 + [消息体]
HTTP 响应:状态行 + 响应头 + 空行 + [消息体]
Django 概述
Django 是 Python 最成熟的 MTV 框架(MTV = Model-Template-View):
| MTV 组件 | 对应 MVC | 说明 |
|---|---|---|
| Model | Model | 数据模型(数据库) |
| Template | View | 网页模板(显示) |
| View | Controller | 视图函数(业务逻辑) |
特点:
- 功能完备(ORM/Admin/表单/认证/缓存)
- 适合快速开发商业网站
- 遵循 DRY 原则
快速上手
安装
pip install django==2.2.13
# 或最新版
pip install django
创建项目
django-admin startproject hellodjango # 创建项目
cd hellodjango
python manage.py startapp polls # 创建应用
项目结构
hellodjango/
├── hellodjango/ # 项目配置目录
│ ├── settings.py # 配置文件
│ ├── urls.py # 根路由
│ └── wsgi.py # WSGI 入口
├── polls/ # 应用目录
│ ├── views.py # 视图函数
│ ├── models.py # 数据模型
│ └── urls.py # 应用路由
└── manage.py # 管理脚本
第一个视图
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world!')
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# hellodjango/urls.py(包含应用路由)
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls')),
]
运行
python manage.py runserver
# 访问 http://127.0.0.1:8000/polls/
settings.py 关键配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'polls.apps.PollsConfig', # 或简写 'polls'
'django.contrib.contenttypes',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
LANGUAGE_CODE = 'zh-hans' # 中文界面
TIME_ZONE = 'Asia/Shanghai' # 时区
USE_TZ = True
常用命令
python manage.py runserver # 启动开发服务器
python manage.py migrate # 数据库迁移
python manage.py createsuperuser # 创建管理员账号
python manage.py startapp app_name # 创建应用
python manage.py makemigrations # 生成迁移文件
python manage.py dbshell # 进入数据库命令行
总结
- Django = MTV 框架,内置 ORM/Admin/表单/认证
startproject→ 创建项目,startapp→ 创建应用- URL → 视图函数 → 响应:
urls.py→views.py→HttpResponse