MVC与MTV模型
MVC
Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:
MTV
Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:
- M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
- T 代表模板 (Template):负责如何把页面展示给用户(html)。
- V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
django下载
pip install django==2.0.1 "我下载的是这个版本"
# 验证是否安装成功:终端输入django-admin看看是否有反应
django创建项目及应用
# 命令行操作 # 1.创建django项目 """ 你可以先切换到对应的D盘 然后再创建 """ django-admin startproject mysite mysite文件夹 manage.py mysite文件夹 __init__.py settings.py urls.py wsgi.py # 2.启动django项目 """ 一定要先切换到项目目录下 cd /mysite """ python manage.py runserver # http://127.0.0.1:8000/ # 3.创建应用 """ Next, start your first app by running python manage.py startapp [app_label]. """ python manage.py startapp app01 # pycharm操作 # 1 new project 选择左侧第二个django即可(创建项目) # 2 启动 1.还是用命令行启动 2.点击绿色小箭头即可 # 3 创建应用 1.pycharm提供的终端(Terminal)直接输入完整命令 2.pycharm tools run manage.py task # 4 修改端口号以及创建server 点击edit configurations,修改Port即可修改端口号
应用注册
***********************创建的应用一定要去settings.py配置文件中注册********************** INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', # 全写 'app02', # 简写 ] # 创建出来的的应用第一步先去配置文件中注册
命令行与pycharm创建项目的区别
# 命令行创建项目没有templates文件夹,需要你自己手动创建;而pycharm会自动帮你创建templates文件夹并且还会自动在settings.py配置文件中配置对应的路径 # pycharm创建 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] ] # 命令行创建 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], ] """ 也就意味着你在用命令行创建django项目的时候不单单需要创建templates文件夹,还需要去配置文件中配置路径 'DIRS': [os.path.join(BASE_DIR, 'templates')] """
主要文件介绍
-mysite项目文件夹 --mysite文件夹 ---settings.py 配置文件 ---urls.py 路由与视图函数对应关系(路由层) ---wsgi.py wsgiref模块(不考虑) --manage.py django的入口文件 --db.sqlite3 django自带的sqlite3数据库(小型数据库 功能不是很多还有bug) --app01文件夹 ---admin.py django后台管理 ---apps.py 注册使用 ---migrations文件夹 数据库迁移记录 ---models.py 数据库相关的 模型类(orm) ---tests.py 测试文件 ---views.py 视图函数(视图层)
""" HttpResponse 返回字符串类型的数据 render 返回html文件的 redirect 重定向 return redirect('https://www.mzitu.com/') return redirect('/home/') """
简单示例
urls.py
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('timer/', views.timer), # views.timer(request) ]
views.py
from datetime import datetime from django.shortcuts import render # Create your views here. def timer(request): """ :param request: :return: """ ctime = datetime.now().strftime("%Y-%m-%d %X") # 第一个参数必须为request,这是请求相关信息 return render(request, "timer.html", {"ctime": ctime})
timer.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>当前时间:{{ ctime }}</h4> </body> </html>
浏览器输入正确路径:http://127.0.0.1:8000/timer/即可正常访问