http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
MTV模型
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,
它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
Django的MTV和广义上的MVC的对应关系:
模型(Model)----models.py
视图(View)----templates
控制器(Controller)-----View.py和urls.py
Django 似乎是一个 MVC 框架,但是您将控制器称为“视图”,并视图称为“模板”。 为什么不使用标准命名?
当然,标准化的名称是有争议的。
在我们对 MVC 的解释中,“视图”描述了呈现给用户的数据。数据看起来怎么样并不重要,重要的是哪些数据被呈现。该视图描述了 您看到了哪些数据,而不是 您怎么看到数据。这是一个微妙的区别。
所以,在我们的例子里,一个"视图(view)"是 Python 中针对一个特定 URL 的回调函数,此回调函数描述了需要展示的数据。
此外,将内容和展示效果分开是很明智的,展示效果就是模板。在 Django 里面,一个视图(view)描述了哪些数据会被展示,但是一个视图通常代表了一个模板,这个模板描述了数据是如何被展示的。
那控制器(Controller)在什么位置?在 Django 中,控制器可能指的是框架本身,框架会根据 Django 的 URL 配置,将请求分发到适当的视图(view)。
如果你想要首字母缩写, 你可能会说 Django 是一个 "MTV " 框架--即 "模型(Model) "、 "模板(Template)" 和 "视图(View). 这种划分更有意义。
Django的创建
- 创建一个虚拟环境
mkdir /django2.1
cd /django2.1
pipenv --python 3.7
- 切换到虚拟环境,安装指定版本(2.1)
以下示例均采用 django2.1 版本,因为 2.2 需要 SQLite3.8
pipenv --python 3.7
pip3 install django==2.1
pip3 --help
pip3 freeze #冻结项目所需环境
pip3 freeze >requirement.txt #将环境所需定向到文件中,方便下一次新项目文件中导入
pip3 install freeze -r requirement.txt #载入所需环境,这就是虚拟环境的好处
二、在 Shell 命令行中创建项目
创建项目
在 shell 命令行中运行如下命令,这将会在当前目录下创建 qfsite 目录, 同时这个也是项目名称。
django-admin startproject qfsite
注意: 创建项目的时候,项目名称不要使用和 Django 或者 Python 的内置变量、模块名称一样的名称,如: test admin 等。
启动 Django 项目
启动方式
共以下三种方式,选择任意一种即可
1. 默认监听本地回环地址的 8000
python3 manage.py runserver
2. 指定监听端口 8080
python3 manage.py runserver 8080
3. 指定 IP 和端口 8080
python3 manage.py runserver 10.18.44.130:8080
指定的 IP 也可以是 0.0.0.0, 这样会监听本主机的所有 IP
创建应用
Django 提供了创建应用的工具,它会自动的创建这个应用应该包含的最低限度的目录和文件。
下面的示例示在 manage.py 文件的同级目录下创建一个应用 ``
python3 manage.py startapp users
编写视图函数
应用创建好后,就可以编写这个应用的视图函数了,用处理客户端发送过来的请求。
在 users/views.py 视图文件中输入以下内容
from django.http import HttpResponse
def users(request):
return HttpResponse("Hello, king。欢迎来到管理用户的应用")
接收到客户端发来的请求后,会返回字符串: Hello, king。欢迎来到投票的应用
3 路由系统
上一步我们编写了处理请求的视图函数,那么这个视图函数用于处理那个请求呢,这个需要有个机制用于处理每个视图函数和请求的对应关系。这里的请求称为一个路由,Django 中称为 url。
一个 url 对应一个视图函数。
处理这个对应关系的系统就是 路由系统,写这个对应关系的文件就是 urls.py
这个文件应该在项目的主目录下,这里是 qfsite/urls.py
编写路由映射关系
现在就来编写它
from django.contrib import admin
from django.urls import path
新增 使用视图函数需要导入到这里
from users import views as users_views
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', users_views.users), # 新增路由映射关系
]
重启项目,测试应用的有效性
Django 会自动重新加载相关已存在的 Python 文件
用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍 Python 代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器
重启需要按下 Ctrol + c, 结束当前进程,并重新输入如下命令
python3 manage.py runserver
目前需要在浏览器中输入如下地址访问 users 这个应用