• Django视图(二)


    目录

    一、HttpRequest对象

    1.属性

    2.URL路径参数

    3.Django中的QueryDict对象

    二、HttpResponse对象

    1. HttpResponse

    2. HttpResponse子类

    3. JsonResponse

    4. redirect重定向


    一、HttpRequest对象

    1.属性

    path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。

    method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。

    encoding:一个字符串,表示提交的数据的编码方式。

    如果为None则表示使用浏览器的默认设置,一般为utf-8。

    这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。

    get:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。

    post:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。

    files:一个类似于字典的对象,包含所有的上传文件。

    cookie:一个标准的Python字典,包含所有的cookie,键和值都为字符串。

    session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

    2.URL路径参数

    • 如果想从URL中获取值,需要在正则表达式中使用分组
    • 获取值分为两种方式
      • 位置参数
        • 参数的位置不能错
      • 关键字参数
        • 参数的位置可以变,跟关键字保持一致即可
    • 注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式
    • 分别使用以上两种获取URL值的方式提取出18 188
      • http://127.0.0.1:8000/18/188/

    位置参数

    • 应用中urls.py

       url(r'^(\d+)/(\d+)/$', views.index),
      
    • 视图中函数: 参数的位置不能错

      1. def index(request, value1, value2):
      2. # 构造上下文
      3. context = {'v1':value1, 'v2':value2}
      4. return render(request, 'Book/index.html', context)

    关键字参数

    • 应用中urls.py

      • 其中?P部分表示为这个参数定义的名称为value1
      • 可以是其它名称,起名要做到见名知意

        url(r'^(?P\d+)/(?P\d+)/$', views.index),
        
    • 视图中函数: 参数的位置可以变,跟关键字保持一致即可

      1. def index(request, value2, value1):
      2. # 构造上下文
      3. context = {'v1':value1, 'v2':value2}
      4. return render(request, 'Book/index.html', context)

    3.Django中的QueryDict对象

    HttpRequest对象的属性GET、POST都是QueryDict类型的对象

    与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

    • 方法get():根据键获取值

      如果一个键同时拥有多个值将获取最后一个值

      如果键不存在则返回None值,可以设置默认值进行后续处理

      get('键',默认值)
      
    • 方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值

      如果键不存在则返回空列表[],可以设置默认值进行后续处理

      getlist('键',默认值)

    二、HttpResponse对象

    视图在接收请求并处理后,必须返回HttpResponse对象或子对象。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。

    1. HttpResponse

    可以使用django.http.HttpResponse来构造响应对象。

    HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
    

    也可通过HttpResponse对象属性来设置响应体、响应体数据类型、状态码:

    • content:表示返回的内容。
    • status_code:返回的HTTP响应状态码。

    响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置:

    1. response = HttpResponse()
    2. response['itcast'] = 'Python' # 自定义响应头Itcast, 值为Python

    示例:

    1. from django.http import HttpResponse
    2. def response(request):
    3. return HttpResponse('itcast python', status=400)
    4. 或者
    5. response = HttpResponse('itcast python')
    6. response.status_code = 400
    7. response['itcast'] = 'Python'
    8. return response

    2. HttpResponse子类

    Django提供了一系列HttpResponse的子类,可以快速设置状态码

    • HttpResponseRedirect 301
    • HttpResponsePermanentRedirect 302
    • HttpResponseNotModified 304
    • HttpResponseBadRequest 400
    • HttpResponseNotFound 404
    • HttpResponseForbidden 403
    • HttpResponseNotAllowed 405
    • HttpResponseGone 410
    • HttpResponseServerError 500

    3. JsonResponse

    若要返回json数据,可以使用JsonResponse来构造响应对象,作用:

    • 帮助我们将数据转换为json字符串
    • 设置响应头Content-Typeapplication/json
    1. from django.http import JsonResponse
    2. def response(request):
    3. return JsonResponse({'city': 'beijing', 'subject': 'python'})

    4. redirect重定向

    1. from django.shortcuts import redirect
    2. def response(request):
    3. return redirect('/get_header')
  • 相关阅读:
    mpvue进阶
    java编程基础总结——26.File对象
    linux 和 windows的換行符不兼容問題
    RabbitMQ常见命令总结
    Linux系统编程(文章链接汇总)
    限制LitstBox控件显示指定行数的最新数据(1/3)
    Keras深度学习实战(30)——使用文本生成模型进行文学创作
    不知道PDF文件怎么解密?推荐3个实用方法给你
    pytest生成HTML测试报告
    Kotlin 开发Android app(十一):Android控件RecyclerView
  • 原文地址:https://blog.csdn.net/m0_61491995/article/details/126093714