Django,是一个Python的web框架
Django
flask
tornado
web.py
这些都是Python web框架
框架,什么是框架,模块,什么是模块,模块和框架的区别?
模块:为了完成摸某一件事,或者某些事,提供了一些封装好的方法和属性 – 封装代码
框架:提供方法属性的同时,也提供处理事务的业务逻辑,扩展代码 – 扩展代码
Django:
1.有完善的ORM关系映射
2.有强大的路由映射功能
3.有完善的视图模板的实现
4.有健全的后台管理系统
5.有强大的缓存支持
Django的下载安装
pip install django 默认下载最新版
pip install django=1.11.15 下载1.11模块
建议在开发Django之前,使用虚拟环境来完成代码开发,以方便与将来的项目部署
检查Django是否成功安装
django-admin --version
import django
django.get_verson()
创建第一个Django项目
django-admin startproject (project_name) # 项目自定义
Django创建成功后,项目结构如下:
mysite # 表示项目名称
|-- mysite # 根模块,根模块跟项目名称保持一致,用来做项目管理
|-- __init__.py # 模块描述文件
|-- settings.py # 项目的配置文件
|-- urls.py # 根路由模块
|-- wsgi.py # Django实现了wsgi web网关接口
|-- manage.py # 该文件是项目的命令文件,不需要我们修改
启动Django项目:
cd 项目主目录
python manage.py runserver [IP:PORT]
IP地址访问需要在settings.py文件中的ALLOW_HOSTS中添加(IP地址)
LANGUAGE_CODE = ‘zh_Hans’
通配标识符–0.0.0.0:PORT(尽量写)
django路由映射
urls.py
url(r"^index$", views.index, name=“index”)
第一个参数是正则表达式,表示URI
第二个参数是绑定一个函数,该函数叫做视图函数
第三个参数是一个字符串,表示路由(路径)的名称(路由反解析)
views.py 视图函数文件
from django.http import HttpResponse
# 视图函数
# 参数--请求头对象
def index(request):
# 返回响应头对象
return HttpResponse("<h1>页面内容</h1>")
Django中,根模块本质不建议直接编写代码
1.不利于团队开发
2.实现了层的分离—分层的概念
~子模块
Django中子模块创建
项目的主目录下
django-admin startapp app_name
mysite # 表示项目名称
|-- mysite # 根模块,根模块跟项目名称保持一致,用来做项目管理
|-- __init__.py # 模块描述文件
|-- settings.py # 项目的配置文件
|-- urls.py # 根路由模块
|-- wsgi.py # Django实现了wsgi web网关接口
|-- app_name # 子模块
|-- migrations # 同步数据的迁移文件的文件夹
|-- __init__.py # 模块描述文件
|-- admin.py # 后台管理系统,用来管理子模块中的模型类的文件
|-- views.py # 子模块的视图文件
|-- urls.py # 需要自己创建的子模块的路由文件
|-- models.py # 定义模型类
|-- tests.py # 测试文件
|-- apps.py # 定义子模块项目相关的文件
|-- manage.py # 该文件是项目的命令文件,不需要我们修改
当子模块创建完成后,必须执行两项操作
1.在根模块中的settings.py文件中INSTALLED_APPS=["子模块名称"]添加子模块名称
2.创建子路由,交给根路由管理(一级路由正则不可以用$结束)
在Django中一般而言,我们创建子模块实现功能
- cd到项目主目录下
django-admin startapp (子模块名称) - 将子模块注册配置文件中
在根模块的settings.py文件中INSTALLED_APPS中添加子模块名称 - 创建子模块路由
urls.py,编写对应的路由匹配 - 将子路由交给根路由
web软件的处理流程(软件的架构)
在传统的web软件,流行MVC的处理流程
M(model) 模型 类、以及跟数据库相关的代码
V(view) 视图 页面
C(controller) 控制器 接受参数,分发请求
目的是为了解耦合~~~~
健壮性、扩展性、维护性
分层管理
高内聚,低耦合
Django认为MVC这种传统的软件处理流程显得有点冗余,对MVC进行升级,得到了它的处理流程(软件架构)–MVT
M(model) 模型层
V(view) 视图层
T(templates) 模板层