• Django1.11基础视图


    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<cat_id>d+)/(?P<goods_id>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
      • 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

  • 相关阅读:
    javascript Object的长度
    java新手笔记9 类的封装示例
    java新手笔记8 包
    java新手笔记7 找最小、最大、排序
    jdk8 新特性
    Spring Boot: 加密应用配置文件敏感信息
    并发之Fork/Join框架使用及注意点
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    spring 事件监听器
    观察者模式(订阅模式)
  • 原文地址:https://www.cnblogs.com/serpent/p/9719636.html
Copyright © 2020-2023  润新知