Django视图

路由命名与reverse反解析

在项目urls中的include函数,使用namespace参数定义路由命名空间

  • url(r'^',incude('book.urls',namespqce='book'))
  • 命名空间表示,凡是book.urls中定义的路由,均属于namespqce指明的book名下
  • 命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开

    定义普通路由时,采用name参数指明路由的名字

    根据路由的名称,返回具体的路径

  • reverse('namespace:name')
  • reverse('name')

    HttpRequest对象

    from django.http import HttpResponse

    Url路径参数

  • 127.0.0.1:8000/book/1/200
  • 路由中使用正则分组接受
    • url(r('book/(?P\d+)/(?P\d+)'), views.get_url)
  • 视图中接受关键字参数
    • def get_url(request,cat_id,goods_id):

      Django中的QueryDict对象

  • 可以一键多值的字典
  • HttpResponse对象的属性GET,POST获取的都是QueryDict对象
  • get('键', 默认值)
    • 获取此键的值,获取不到返回默认值
  • getlist('键',默认值)
    • 获取此键的所有值,获取不到返回默认值

      查询字符串Query String

  • 127.0.0.1:8000/book?k1=v1&k2=v2&k2=v3
  • 查询字符串不区分请求方式,即使客户端进行POST方式进行请求,依然可以通过request.GET获取请求中的查询字符串数据
  • def get_str(request):
    dict = request.GET
    v1 = dict.get('k1')
    v2_v3 = dict.getlist('k2')
    return HttpResponse('get_str_ok')

    请求体

  • 表单类型Form Data
    • 表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象
    • def get_form(request):
      dict = request.POST
      v1 = dict.get('k1')
      v2_v3 = dict.getlist('k2')
      return HttpRequest('get_form_ok')
  • 非表单类型Non-Form Data
    • 非表单类型的请求数据,Django无法自动解析,
      通过request.body属性获取原始的请求数据,自己按照请求体格式(JSON,XML)手动解析
      request.body返回bytes类型

      • JSON数据

        • import json
        • def post_json(request):
          json_str = request.body
          req_data = json.loads(json_str)
          # 获取到字典
          return HttpResponse('ok')

          请求头

  • request.META
    • 获取请求头中的数据,返回字典类型

      其他HttpRequest对象属性

  • request.methos
  • request.user

    HttpResponse对象

    HttpResponse

  • from django.http import HttpResponse
  • HttpResponse(,content=响应体,content_type=响应体数据类型,status=状态吗)
  • response = HttpResponse(响应体)
    response.status_code=400 # 状态码
    response['itcast'] = 'python' # 自定义响应头
    return response

    HttpRespnse子类

  • 快速设置状态吗

    JsonResponse

  • 自动将数据转换为json字符串
    自动设置响应头Content-type为application/json

    • return JsonResponse({'city': 'beijing', 'subject': 'python'})

      redirect重定向

  • return redirect('/get_header')

    状态保持

    Cookie

  • 设置Cookie
    • HttpResponse.set_cookie(cookie名,value=cookie值,max_age=cookie有效期)
  • 读取cookie
    • request.COOKIES

      • 返回字典类型数据
  • 删除cookie
    • response.delete_cookie('cookie键')

      Session

  • Django默认启用session
  • session存储的位置
    • 数据库
    • 本地缓存
    • 混合存储
    • redis:分布式
  • session操作
    • request.session['键']=值

      • 设置session
    • request.session.get('键',默认值)
      • 获取session
    • request.session.clear()
      • 删除session值
    • request.session.flush()
      • 删除session键和值
    • del request.session['键']
      • 删除指定键和值
    • request.session.set_expiry(value)
      • 设置有效期
      • value是一个整数,则value秒后过期
      • value为0,会话结束过期
      • value为None,采用默认有效期,两周

XMind: ZEN - Trial Version

Django1.11基础视图的更多相关文章

  1. UI基础视图----UIWebView总结

    UIWebView是UIKit框架中继承于UIView的一个常用的基础视图,和UILabel,UIImageView是兄弟类,用于展示一个网页. UIWebView是一个可以设置代理的类,在加载的不同 ...

  2. Django1.11搭建一个简易上传显示图片的后台

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 项目展示需要,之前没研究过Django,网上查资料快速做了一个后台,写下了防止自己忘了. p ...

  3. Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序

    Win7上使用Apache24和mod_wsgi部署Django1.11应用程序 by:授客 QQ:1033553122 测试环境 win7 64 Django-1.11.4.tar.gz 下载地址: ...

  4. 11.Mysql视图

    11.视图11.1 什么是视图 视图view是一张虚拟表,它不存储数据,数据仍在表里,视图由一条查询表的select语句创建,视图只存储select语句. 可以将复杂的查询语句封装成视图,用户可以从视 ...

  5. Django1.11 的serializers序列化model

    开发环境:Django1.11  Python3 如果想把很多model转化成json格式可以直接这样写: from django.views.generic.base import View fro ...

  6. Django1.11配合uni-app发起微信支付!

    Django1.11配合uni-app发起微信支付! 经过三天的断断续续的奋战,我终于是干动了微信支付.为了以后不忘记,现在来一篇教程,来来来,开干!!! 一.准备阶段 1.准备阶段我们需要去微信官网 ...

  7. Python3.7&Django1.11.15 兼容性问题

    环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...

  8. python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized

    有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...

  9. python3.7环境下创建app,运行Django1.11版本项目报错SyntaxError: Generator expression must be parenthesized

    咳咳!!! 今天用命令行创建django项目中的app应用,出现了这样一个错误 这个错误在python3.6版本下安装运行django 1.11版本正常运行,但python3.7版本下运行django ...

随机推荐

  1. NIO 聊天室代码实现

    服务器端 package com.ronnie.nio.groupChat; import java.io.IOException; import java.net.InetSocketAddress ...

  2. CSS屏幕适配尺寸样式

    /* 大屏幕 :大于等于1200px*/@media (min-width: 1200px) { ... } /*默认*/@media (min-width: 980px){...} /* 平板电脑和 ...

  3. 19 02 03 django 中cookies 和 session 和 cache

    Session 是单用户的会话状态.当用户访问网站时,产生一个 sessionid.并存在于 cookies中.每次向服务器请求时,发送这个 cookies,再从服务器中检索是否有这个 session ...

  4. 指令——pwd

    完整的指令的标准格式:Linux通用的格式 #指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. 指令pwd: 用法:#pwd(print workin ...

  5. iphone 面试题(转)

    转]iPhone 面试题解答 2011-07-20 0:51 转载自  492437598 最终编辑  492437598 1.main()  {     int a[5]={1,2,3,4,5};  ...

  6. bzoj 3696: 化合物

    哦,这个困惑了我好久的东西——生成函数(母函数),(然而拿这个东西去向学文化课的同学装逼并不成功...) 生成函数,就是把原来的加法组合变成乘法的指数加法,那么我们要求的值就是相应的指数的系数的值啦, ...

  7. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  8. 【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章       STM32H7的LTDC应用之点阵字体和 ...

  9. 快速进阶Vue3.0

    在2019.10.5日发布了Vue3.0预览版源码,但是预计最早需要等到 2020 年第一季度才有可能发布 3.0 正式版. 可以直接看 github源码. 新版Vue 3.0计划并已实现的主要架构改 ...

  10. java核心-JVM-gc面试题

    1.写一个memory leak的例子 public class MemonyLeak { //1.memoryLeak内存泄漏 /* 这类错误报错具体显示:java.lang.OutOfMemory ...