django中的视图基础知识整合·

视图

  • 概念:
    • 作用:视图接受web请求,并响应web请求
    • 本质:视图就是一个python函数
  • 响应:
    • 网页:
      • 重定向
      • 错误视图
        • 404
        • 500
    • JDON数据
  • 响应过程:
    • 用户在浏览器中输入网址(www.sunck.wang/sunck/index.html) 网址
    • django获取网址信息 ----》 去除IP与端口 (sunck/index.html) 虚拟路径与文件名
    • url管理器 --》逐个匹配urlconf --》 记录视图函数名 #匹配成功执行对应的视图函数 视图函数名
    • 交给视图管理器view --》 找到对应的视图去执行,返回结果给浏览器 --》 返回第一步 网页(相应的数据)
  • url配置:
    • 配置流程:
      制定根级url配置文件 —> settings.py文件中的 ROOT_URLCONF(默认已经修改好了)
      • urlpatterns:
        一个url实例列表
        url对象;
        正则表达式
        视图名称
      • url匹配正则的注意事项;
        • 如果想要从url中获取一个值,需要对正则加小括号
        • 匹配正则前方不需要加斜杠
        • 正则前需要加r表示字符串不转义
    • 引入其他url配置
      一般在应用中创建url.py文件,定义本应用的url配置,在工程中urls.py文件中使用include()方法
    • URL反向解析(反向代理)
      • 概念:如果视图、模板中使用了硬编码链接,在URL配置发生改变时,动态生成链接地址
      • 解决:在使用连链接时,通过url配置的名称,动态生成url地址
      • 作用:使用url模板
  • 视图函数
    • 定义视图:
      • 本质:一个函数
      • 视图参数:一个HttpRequest实例
        通过正则表达式获取参数
      • 位置:一般在views.py文件夹下定义
        错误视图:
      • 404视图 --> 再找不到网页时(url匹配不成功)返回的
        在templates目录下定义404.html --> request_path导致错误的网址
        • 配置setting.py文件
          DEBUG:如果为Ture永远不执行404
          ALLOWED_HOSTS = [’*’]
        • 500视图 --> 在试图代码中出现错误(服务器代码)
        • 400视图 --> 错误出现在客户的操作
  • HttpRequest对象
    • 概述:服务器接收http请求后,会根据报文(数据流)创建一个HttpRequest对象,视图的
      第一个参数就是HttpRequest对象,是django创建的,之后调用视图时传递给视图
    • 属性;
      • path:请求的完整路径(不包括域名和端口)
      • method:表示请求的方式,常用的GET、POST
      • encoding:表示浏览器提交的数据的编码方式(utf-8)
      • GET:类似于字典的对象,包含了get请求的所有参数
      • POST:类似于字典的对象,包含了post请求的所有参数
      • FILES:类似于字典的对象,包含了所有上传的文件
      • session:类似字典对象,表示当前会话
    • 方法:
      • is_ajax():如果是通过XMLHttpRequest发起的,返回True()
    • QueryDict对象
      • 方法:
        • get():根据键获取值,只能获取一个
        • getlist():将键的值以列表的形式返回,可以获取多个值
    • GET属性:获取浏览器传递过来的给服务器的数据
      - 例如:http://127.0.0.1:8080/sunck/get1?a=1&b=2&c=3
                def get1(request):
                    a = request.GET.get('a')
                    b = request.GET.get('b')
                    c = request.GET.get('c')
                    return HttpResponse(a+''+b+''+c)
				def get2(request):
                   a = request.GET.getlist('a')
                    a1 = a[0]
                    a2 = a[1]
                    c = request.GET.getlist('c')
                    return HttpResponse(a1+''+a2+''+c)
  • POST属性:
    使用表单模拟实现POST请求
  • HttpResponse对象
    • 概念:给浏览器返回数据
    • HttpRequest对象是由django创建,HttpResponse是由程序员创建
      • 返回数据用法:
        • 不调用模板,直接返回数据
          def index(request):
          return HttpResponse(‘页面’)
        • 调用模板,调用render
        • 原型:render(request,templateName[,context])
        • 作用:结合页面数据和模板,返回完整的HTML页面
        • 参数:
          • request:请求体对象
          • templateName:模板路径
          • context:传递给需要渲染在模板上的数据
        • 实例:
          def insdex(render):
          return render()
      • 属性:
        content:表示返回的内容的类型
        charset:编码格式
        status_code:响应状态码
        200,304,404
      • 方法:
        init: 使用页面内容实例化HttpResponse对象
        wreite(content):以文件的形式写入
        flush(): 以文件的形式输出缓冲区
        set_cookie(key,value=’’,max_age=None,exprise=None)
        delete_cookie(key):删除cookie
        注意:如果删除一个不存在的key,就当什么都没发生
      • 子类HttpResponseRedirect:重定向,服务器端的跳转,跳转到另一个页面
        例如:www.baidu.com跟www.baidu.com/index.html是一个页面,只这就是重定向
        • 简写:用和rander同级的radirect
        • 引入:from django.shortcutes import redirect2
      • 子类JsonResponse:
        可以返回json数据,一般用于异步请求
      • init(self,data)
        data 字典对象
        注意:Context-type类型为application/json
  • 状态保持
    • http协议是无状态的,每次请求都是一次新的请求,不记得以前请求
      例如:京东登录页面,未登录后进入后,显示未登录,登录后再次访问时,状态还是未登录
    • 客户端与服务端的一次通信就是一次会话
    • 实现状态保持,在客户端或者服务端存储有关会话的数据
    • 存储方式:
      cookie: 所有的数据存储在客户端,不要存敏感信息
      缺点:存数量小,不安全
      session:所有的数据存数在服务端,在客户端用cookie存储session_id
    • 状态保持的目的:在一段时间内跟踪请求者的状态,可以实现夸页面访问当前的请求者的数据
      注意:不同的请求者之间不会共享这个数据,与请求者是一一对应的
    • 启用session
      setting.py文件中 INSTALLED_APPS , MIDDLEWARE默认启动状态
    • 使用session
      • 启用session后每个HttpRequest对象都有一个session属性,就是一个类似字典的对象
        get(key,default=None) :根据键获取session值
        clear():清空所有的会话
        flush():删除当前会话并删除会话的cookie
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值