1.简介

web应用程序的本质

  1. 接收并解析HTTP请求

  2. 处理本次请求,完成业务上的处理

  3. 构造并返回响应HTTP响应

 

 

 

什么是web框架呢?

 

Django是通过python实现的web框架,是开源的,正式版本发布于2008年,常见的web框架:django、flask、tornado

Django采用MVT的软件设计模式,即模型(Model),视图(View),和模板(Template)

MVT的 工作流程

所以学习django的重点就是url+MVT

2.下载

本次总结使用的是Django3.2版本

在本地安装

查看django版本号

 

 

 

3.虚拟环境

我们默认使用的都是系统解释器,我们安装的所有模块都在系统下,这为我们以后迁移项目带来很大的不便,我们在实际开发中更推荐的做法是为每一个项目创建一个虚拟环境,该环境包含项目所需要的所有模块

pip install virtualenv
mkdir env
cd env
virtualenv test --python=python3
source test/bin/activate
pip install django==3.2
..
deactive

4.项目创建

4.1 使用命令行创建项目

django-admin startproject mytest  # 指定项目名称

目录结构:
D:\project\mytest
├── manage.py              [项目的管理工具]  
└── mytest
    ├── __init__.py
    ├── settings.py        【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】
    ├── urls.py               【主路由,在里面编写  /xxx/xxx/xxx ---> index 】
    ├── asgi.py            【异步】
    └── wsgi.py            【同步,主】
django-admin startapp app01

│─ manage.py        # 终端脚本命令,提供了一系列用于生成文件或者目录的命令,也叫脚手架
└─ mytest/          # 主应用开发目录,保存了项目中的所有开发人员编写的代码, 目录是生成项目时指定的
    │- asgi.py      # django3.0以后新增的,用于让django运行在异步编程模式的一个web应用对象
    │- settings.py  # 默认开发配置文件
    │- urls.py      # 路由列表目录,用于绑定视图和url的映射关系
    │- wsgi.py      # wsgi就是项目运行在wsgi服务器时的入口文件
    └- __init__.py
└─ app01            # 子应用
    │- models       # 该应用的模型类模块
    │- views        # 该应用的视图模块
    │- tests        # 该应用的单元测试模块
    │- apps         # 该应用的一些配置,自动生成
    │- admin.py     # 该应用的后台管理系统配置
python3 manage.py runserver 127.0.0.1:8090

4.2 使用pycharm创建项目

  • 创建项目
    通过这种方式创建的django版本是最新的,不推荐

     

     

  • 运行项目

     

     

  • 访问项目

     

     

4.3 使用pycharm创建带有虚拟环境的项目

使用pycharm默认就会激活虚拟环境
pip install django==3.2
 django-admin startproject pythonProject1 .
django-admin startapp app01

4.4 django的快速使用

在django中展示数据给用户,需要3个步骤

  • 在urls.py中射进url与视图的映射关系

  • 创建视图函数

  • 模板渲染

创建路由

创建视图函数

模板

 

 

 

 

4.5 创建多项目app

如果在一个项目中有很多个子项目,我们通常会将多个子app规整在一个文件夹下,使得目录更加简洁

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.app01.apps.App01Config',
    "apps.app02.apps.App02Config"
]