以下是 request
对象中你经常能用到的其他核心属性:
属性 | 类型 | 说明 | 示例 |
---|
request.path | str | 请求的完整路径(含脚本前缀) | /dashboard/ |
request.path_info | str | 请求路径(去除了脚本前缀) | /dashboard/ |
request.get_full_path() | str | 路径 + 查询字符串 | /dashboard/?page=2 |
request.get_raw_uri() | str | 完整请求 URI(含协议、host、路径等) | https://example.com/dashboard/?q=test |
request.method | str | 请求方法 | 'GET' , 'POST' , 'PUT' , 'DELETE' |
request.GET | QueryDict | GET 参数(URL 查询参数) | ?name=Tom&age=20 → request.GET['name'] |
request.POST | QueryDict | POST 表单数据 | 提交表单时使用 |
request.FILES | MultiValueDict | 上传的文件数据 | 配合 enctype="multipart/form-data" 使用 |
request.COOKIES | dict | 客户端 Cookie | request.COOKIES.get('sessionid') |
request.session | SessionStore | 当前用户的 session 对象 | request.session['user_id'] = 123 |
request.user | User 或 AnonymousUser | 当前登录用户(需配合 Django auth) | request.user.is_authenticated |
request.META | dict | HTTP 请求头和其他元数据 | request.META['HTTP_USER_AGENT'] , request.META['REMOTE_ADDR'] (IP) |
request.scheme | str | 协议类型 | 'http' 或 'https' |
request.content_type | str | 请求体的 MIME 类型 | 'application/json' |
request.content_length | int or None | 请求体长度 | 用于验证上传大小 |
request.body | bytes | 原始请求体数据(用于非表单如 JSON) | json.loads(request.body) |
举个例子说明这些属性的用法
def my_view(request):print("路径:", request.path_info) # /my/page/print("完整路径:", request.get_full_path()) # /my/page/?q=testprint("方法:", request.method) # GET 或 POSTprint("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")