04-请求对象和相应对应

请求

# http://127.0.0.1:8000/user/tel/13800000000/?username=coco&age=13&age=18

# 视图函数第一个参数就是请求对象,由django传递
def get_phone(request, phone):
    # request常用属性
    
    # GET
    print(request.GET)  # Get quersetDict
    # 获取单一值
    print(request.GET.get("username"))
    # 获取多值
    print(request.GET.getlist("age"))  # 返回值是一个列表  ['13', '18']



    # POST
    print(request.POST.get("username"))
    print(request.POST.getlist("hobby"))

    # 其他
    print(request.method)  # 请求方式
    print(request.path)  # 请求路径

    print(request.META)  # 其他请求属性
    print(request.META.get("REMOTE_ADDR"))  # 主机地址
    print(request.META.get("HTTP_REFERER"))  # 来源页面

    # 常用方法
    print(request.get_full_path())  # 带参数的请求路径
    print(request.get_host())  # 主机地址和端口
    print(request.build_absolute_uri())  # 完整的请求路径


    print(request.GET.dict()) # 获取请求参数的字典,由querydict转为dict

    return HttpResponse(phone)  # 返回给用户的是响应对象

响应

def handle_reponse(request):
    # HttpResponse 返回文本格式
    res = HttpResponse("响应对象")
    res.content_type = "text/html"  # 响应头Content-Type
    res.status_code = 400  # 设置响应状态码
    return res

    # render返回html页面
    res = render(request, "index.html")
    return res

    # JsonResponse 返回json字符串
    # 一般是可以把字典和列表转换成json字符串返回给前端;字典和列表只能包含内置类型
    return JsonResponse({"name": "coco"})
    # 如果参数不是字典,必须加上safe=False:不校验返回格式
    return JsonResponse([1, 2, 3], safe=False)

# 重定向
def handle_redirect(request):
    # HttpResponseRedirect():重定向到指定路由地址,参数就是路由,快捷方式 redirect()
    # 正向定位
    return redirect('/user/')  # 不带参数
    return redirect("/user/{}/{}".format("coco",12))  # 带参数

    # 反向定位: 由应用命名空间:name来确定路由
    # 需要在子应用的urls.py中加上   app_name="App" 应用的命名空间
    return redirect(reverse("App:index")) # 不带参数
    return redirect(reverse("App:phone",args=("13800000000",))) # 带参数

    # 如果参数有名字,必须使用kwargs关键字传参的方式
    return redirect(reverse("App:phone",kwargs={"name":"admin","age":20})) # 带参数

    
posted @ 2023-03-28 18:29  测试圈的彭于晏  阅读(37)  评论(0)    收藏  举报