在 Django 中,请求(request)和响应(response)对象是处理 HTTP 请求和返回 HTTP 响应的核心。它们分别由 Django 的 HttpRequest
和 HttpResponse
类表示。
HttpRequest 对象
HttpRequest
对象包含了客户端发送的所有 HTTP 请求信息。Django 在每个视图函数中都会传递一个 HttpRequest
对象作为第一个参数
from django.http import HttpResponse
from django.shortcuts import render
def my_view(request):
# 获取 GET 参数
param = request.GET.get('param_name', 'default_value')
# 获取 POST 参数
post_param = request.POST.get('post_param_name', 'default_value')
# 获取用户信息
user = request.user
# 获取请求头信息
user_agent = request.META.get('HTTP_USER_AGENT', 'Unknown')
# 返回一个简单的 HTTP 响应
return HttpResponse(f"Param: {param}, User Agent: {user_agent}")
HttpResponse 对象
HttpResponse
对象用于向客户端发送 HTTP 响应。你可以传递一个字符串作为响应内容,或者可以传递一个迭代器(用于处理大文件等)。
from django.http import HttpResponse
def my_view(request):
# 创建一个简单的 HTTP 响应
response = HttpResponse("Hello, world!")
# 设置自定义响应头
response['Custom-Header'] = 'MyValue'
# 设置 HTTP 状态码
response.status_code = 404
# 设置一个 cookie
response.set_cookie('my_cookie', 'cookie_value')
return response
JsonResponse 对象
对于返回 JSON 数据的场景,Django 提供了 JsonResponse
,它会自动设置 Content-Type
为 application/json
。
from django.http import JsonResponse
def my_json_view(request):
data = {
'key1': 'value1',
'key2': 'value2',
}
return JsonResponse(data)