初学djang浅谈(二)
目录
关于django视图模板
Django是一个实现了MVT处理模式的、功能全面强大、主要应用于企业级wed中型项目开发应用。
什么是MVT
Mvt( 数据模型视图模板):
M:model数据模型
V:view 视图
T:template 模板
MVT 是在MVC 处理模式的基础上衍生出来的一种处理模型,将控制器c 部分封装了路由配置,通过MV之间的路由映射关系完成的复杂发的功能,通过冲用模板T来 达到了视图的复用,泳衣提高开发效率的过程。
视图操作
视图函数就是在软件是与用户交互的一部分,其界面的重要性以及操作功能的完整性需要非常高的保障,一个完整的视图操作,增加其用户的视觉感受,从而大大加强用户的体验。
关于视图函数操作的模块
from django.http import HttpResponse
|-- 其在前端与后端的交互中数据,适合传输字符串 速度快
导入一个解析模板的 loader 对象
from django.template import loade
|-- # 使用 loader 加载页面,注意路径问题,
# loader 会自动去 templates 文件夹下查询页面
引入需要的 render 对象
from django.shortcuts import render
|-- # render 函数可以将视图快速返回
关于RESTFUL请求
当前的技术,进行数据传输到服务器的主要有两种方式,一种是传统的 get 或者 post
协议中携带数据,一种就是最近比较流行的 RESTful 方式,RESTful 参数处理,就是通过将参 数包含在 URL 地址中 作为地址的一部分出现
Django 也实现了 RESTful 风格发送参数是将参数包含在 url 地址中,所以参数的接收 定义就会在路由中进行配置,参数的配置接收主要有两种方式如下,我们推荐第二种方式:
➢ 第一种方式:位置参数
➢ 第二种方式:关键字参数
关于request对象
Request 是 web 开发中的请求头对象,它携带者请求者的大多数信息,这些信息有些是 我们需要的。 首先在视图处理函数中,第一个参数被 Django 自动设置成了包含浏览器发送的请求 数据的请求对象,对于请求对象 Request,有如下的属性值得我们思考。
➢ path: 一个表示完整访问路径的字符串,不包含域名,就是 URI
➢ method:一个表示请求方式的字符串
➢ encoding:一个表示请求编码方式的字符串
➢ GET:一个像 dict 的对象,包含了 get 方式请求的所有参数数据
➢ POST: 一个像 dict 的对象,包含了 post 方式请求的所有参数数据
➢ FILES: 一个像 dict 的对象,包含了所有的上传的文件
➢ COOKIES:一个字典对象,包含所有的 cookie 值
➢ session:一个 like dict 对象,用于表示当前会话,Django 启用会话支持时可 用
关于Response
Django 中的 Response 响应对象,主要用来进行浏览器响应数据的处理。 响应数据的处理包括两部分:响应对象本身和响应返回视图操作
响应对象的属性和方法操作
属性操作
content 响应的数据内容
charset 数据编码格式
status_code HTTP 响应状态码
content-type 指定输出内容类型 方法操作
init() 使用网页内容创建 HttpResponse 对象
write(content) 以文件的方式写入数据 flush() 以文件的方式刷新推送数据 set_cookie(k,v,m_a,e) 设置 cookie 中存储数据 k:key,变量名称 v:value,变量中存放的值 m_a:max_age,
cookie 过期时间,单位秒
e:expires,过期时间 datetime 类型s
关于django的静态文件处理
的静态资源,其实 Django 默认是在子模块下的 static 文件夹中,注意:static 和 上面 templates 文件夹同级别,为了隔离路径,建议在 static 下再创建一个子模块名称的文件.
模块继承说明及优势
我们发现,一般项目中,大多数页面都是存在共同部分的如果页面的 头部和尾部。如果每个页面都去写,显得代码冗余,其次就是突然有天需要修改,都有需要修改,不利于开发和维护,所以我们一般会将这些共有部分抽取出来,作为一个模板,让其 他页面继承这个模板,这个就是模板继承。
➢ 变量的展示 -- mustache 语法 {{变量}} {{对象.属性名称}}
➢ 标签{% %} 程序结构
⚫ 选择结构 {% if 条件 %}
{% elif 条件 %}
{% else %}
{%endif%}
⚫ 循环结构 {% for 变量 in 列表%}
{% empty %} {% endfor %}
其他标签 {% csrf_token %}
{% block %}
{% load %}
{% url %}
{% static %}
➢ 注释部分 单行注释 {# 注释的内容 #}
多行注释 {% comment %}
需要注释的内容 {% endcomment %}
➢ 过滤器 {{变量 | 过滤器}}
路由的核心操作
路由操作重定向(redirect)
之前我们使用的都是转发请求,就是一个路由路径,对应一个视图函数,视图函数返回 一个模板,展示数据,完成整个操作。但是在真实的开发中,我们也经常遇到一个请求,对 应一个视图函数,该函数完成功能之后,需要跳转到下一个视图函数中。如登录。 登录我们首先提交数据到登录视图函数,登录视图函数验证登录成功,之后需要访问首 页面,而首页面我们直接访问肯定不行(因为首页需要首页的视图函数加载数据的!),这个 时候需要从登录视图函数完成后进入到首页视图函数,完成首页数据加载
我们就需要一种 新的跳转方式---重定向(redirect)。
一般重定向是不需要传递参数的,如果必须传递参数,建议使用 kwargs 的命名方式传 递(推荐)或者 args 的占位方式传递。