Django HttpRequest 对象的常用属性 - 指南

以下是 request 对象中你经常能用到的其他核心属性:

属性类型说明示例
request.pathstr请求的完整路径(含脚本前缀)/dashboard/
request.path_infostr请求路径(去除了脚本前缀)/dashboard/
request.get_full_path()str路径 + 查询字符串/dashboard/?page=2
request.get_raw_uri()str完整请求 URI(含协议、host、路径等)https://example.com/dashboard/?q=test
request.methodstr请求方法'GET''POST''PUT''DELETE'
request.GETQueryDictGET 参数(URL 查询参数)?name=Tom&age=20 → request.GET['name']
request.POSTQueryDictPOST 表单数据提交表单时使用
request.FILESMultiValueDict上传的文件数据配合 enctype="multipart/form-data" 使用
request.COOKIESdict客户端 Cookierequest.COOKIES.get('sessionid')
request.sessionSessionStore当前用户的 session 对象request.session['user_id'] = 123
request.userUser 或 AnonymousUser当前登录用户(需配合 Django auth)request.user.is_authenticated
request.METAdictHTTP 请求头和其他元数据request.META['HTTP_USER_AGENT']request.META['REMOTE_ADDR'](IP)
request.schemestr协议类型'http' 或 'https'
request.content_typestr请求体的 MIME 类型'application/json'
request.content_lengthint or None请求体长度用于验证上传大小
request.bodybytes原始请求体数据(用于非表单如 JSON)json.loads(request.body)

举个例子说明这些属性的用法

def my_view(request):
print("路径:", request.path_info)           # /my/page/
print("完整路径:", request.get_full_path()) # /my/page/?q=test
print("方法:", request.method)              # GET 或 POST
print("GET参数:", request.GET.dict())       # {'q': 'test'}
print("用户IP:", request.META.get('REMOTE_ADDR'))
print("User-Agent:", request.META.get('HTTP_USER_AGENT'))
print("是否HTTPS:", request.scheme == 'https')
print("当前用户:", request.user.username)
print("Session中的app:", request.session.get("app"))
if request.method == "POST":
print("POST数据:", request.POST.dict())
print("上传文件:", request.FILES.get("avatar"))
return HttpResponse("OK")
posted @ 2025-09-21 08:34  yxysuanfa  阅读(6)  评论(0)    收藏  举报