Python day16--Django

第一节:MVC与MTV模型

1.1MVC

Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M)-Model、控制器(C)-Controller和视图(V)-View三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器负责接收用户的输入调用模型和视图完成用户的请求,其示意图如下所示:

MVC的优缺点
优点:

把业务逻辑全部分离到Controller中,模块化程度高。当业务逻辑变更的时候,不需要变更View和Model,只需要Controller换成另外一个Controller就行了 。
观察者模式可以做到多视图同时更新。
缺点:

Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,Controller业务逻辑的正确性是无法验证的:Controller更新Model的时候,无法对View的更新操作进行断言。
View无法组件化。View是强依赖特定的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了。因为不同程序的的Domain Model是不一样的。
 

1.2 MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是指:

  • M代表模型(Model):负责业务对象和数据库的关系映射(ORM)。
  • T代表模板(Template):负责如何把页面展示给用户(html)。
  • V代表视图(View):负责业务逻辑,并在适当时候调用Model和Template。

Django 通过URL控制器(urls.py)完成路由分发,针对不同的访问路径指派不同的函数;这些不同函数保存在view视图(views.py)中,完成import调用,views.py使用来存放视图 (逻辑)函数,视图(views.py)去Models.py取数据,Models.py到数据库中查找数据,将数据返回给视图(views.py)函数,views.py在Template模板(template文件夹)中找到相对应的模板拿过来,将数据嵌套在template模板中的模板中,最终提交给浏览器。

Django安装

Django 下载
 

pip3 install django==版本号


下载最新版

pip3 install django

pip是python 的一个下载工具
Django 命令:
    创建一个Django项目:
  

django-admin.py startproject 项目名称
django-admin.py startproject myproject

   创建一个应用(app01...app09):(进入项目)    

python manage.py startapp 应用名称
python manage.py startapp app01

   启动django项目    

python manage.py runserver IP PORT  (默认端口是8000)

   一个简单Django项目的流程

  URL路由(urls.py)

   访问者 ----> URL控制器 ----> views.py(视图) ----> templates(构建模板)

   如下图

   

   创建好django项目以后,在项目目录下会存在一个和项目名称一样的目录,这个目录主要是存放一些全局性的配置文件;
   Django项目 目录及文件说明:

	mysite 	# 项目名称
		mysite	# 全局配置文件
			-- urls.py	# 路由控制层
			-- settings.py	# 全局配置文件
			-- wsgi.py	
			-- asgi.py
		app01	# 应用名称
			-- views.py	# 存放视图函数
			-- models.py	# 数据库交互模块
		templates	# 存放模板文件

URL控制器 重定向

Django 路由配置文件中加载re_path模块
通过re_path(‘正则表达式’,视图函数),举个栗子:

from django.contrib import admin
from django.urls import path,re_path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^login/$', include('views.login')),
]

视图函数

向服务器发送请求形式:
        1 浏览器地址栏:GET
        2 超链接标签:GET
        3 form表单(输入用户名密码):GET、POST
        4 Ajax:可以发所有请求
--views.py--

    

def index(request):

    # request:请求对象

    # 得到请求方式
    print(request.method)

    # 得到请求数据
    print("GET", request.GET)
    print("POST",request.POST)

    name = request.POST.get("name")     # 请求字典的值(一个值)
    print("name", name)

    # name = request.POST.getlist("name")  # 请求字典的多个值
    # print("name", name)
    # 请求路径
    print(request.path)         # 路径部分
    print(request.get_full_path())  # 路径+参数部分

    # 请求主机
    print(request.get_host())       # 请求主机,例子:127.0.0.1:18088
    print(request.get_port())       # 请求端口,例子:18088

    return HttpResponse('index....')


    浏览器 发送GET 请求带数据
    http://127.0.0.1:18088/index/?User=alvin&pwd=123
    例子:http://127.0.0.1:18088/index/?User=xiaowu&pwd=sports
    <QueryDict: {'User': ['xiaowu'], 'pwd': ['sports']}>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值