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

posted @ 2018-09-28 17:01  贾祥飞  阅读(409)  评论(0编辑  收藏  举报