使用例子:
>>> from django.http import *
>>> request = HttpRequest()
>>> request.__doc__
>>> help(request)
>>> request.META
29: {}
>>> request.is_ajax()
30: False
>>> request.GET
31: {}
>>> request.FILES
32: {}
以下是request 的源码:
class HttpRequest(object):
"""A basic HTTP request."""
# The encoding used in GET/POST dicts. None means use default setting.
_encoding = None
_upload_handlers = []
def __init__(self):
self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
self.path = ''
self.path_info = ''
self.method = None
def __repr__(self):
return '<HttpRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
(pformat(self.GET), pformat(self.POST), pformat(self.COOKIES),
pformat(self.META))
def get_host(self):
"""Returns the HTTP host using the environment or request headers."""
# We try three options, in order of decreasing preference.
if 'HTTP_X_FORWARDED_HOST' in self.META:
host = self.META['HTTP_X_FORWARDED_HOST']
elif 'HTTP_HOST' in self.META:
host = self.META['HTTP_HOST']
else:
# Reconstruct the host using the algorithm from PEP 333.
host = self.META['SERVER_NAME']
server_port = str(self.META['SERVER_PORT'])
if server_port != (self.is_secure() and '443' or '80'):
host = '%s:%s' % (host, server_port)
return host
def get_full_path(self):
return ''
def build_absolute_uri(self, location=None):
"""
Builds an absolute URI from the location and the variables available in
this request. If no location is specified, the absolute URI is built on
``request.get_full_path()``.
"""
if not location:
location = self.get_full_path()
if not absolute_http_url_re.match(location):
current_uri = '%s://%s%s' % (self.is_secure() and 'https' or 'http',
self.get_host(), self.path)
location = urljoin(current_uri, location)
return iri_to_uri(location)
def is_secure(self):
return os.environ.get("HTTPS") == "on"
def is_ajax(self):
return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
def _set_encoding(self, val):
"""
Sets the encoding used for GET/POST accesses. If the GET or POST
dictionary has already been created, it is removed and recreated on the
next access (so that it is decoded correctly).
"""
self._encoding = val
if hasattr(self, '_get'):
del self._get
if hasattr(self, '_post'):
del self._post
def _get_encoding(self):
return self._encoding
encoding = property(_get_encoding, _set_encoding)
def _initialize_handlers(self):
self._upload_handlers = [uploadhandler.load_handler(handler, self)
for handler in settings.FILE_UPLOAD_HANDLERS]
def _set_upload_handlers(self, upload_handlers):
if hasattr(self, '_files'):
raise AttributeError("You cannot set the upload handlers after the upload has been processed.")
self._upload_handlers = upload_handlers
def _get_upload_handlers(self):
if not self._upload_handlers:
# If thre are no upload handlers defined, initialize them from settings.
self._initialize_handlers()
return self._upload_handlers
upload_handlers = property(_get_upload_handlers, _set_upload_handlers)
def parse_file_upload(self, META, post_data):
"""Returns a tuple of (POST QueryDict, FILES MultiValueDict)."""
self.upload_handlers = ImmutableList(
self.upload_handlers,
warning = "You cannot alter upload handlers after the upload has been processed."
)
parser = MultiPartParser(META, post_data, self.upload_handlers, self.encoding)
return parser.parse()
分享到:
相关推荐
**Python-用于Djangoweb框架的PEP484类型提示绑定** 在Python编程中,类型提示(Type Hints)是一种强大的工具,它能够帮助开发者在编写代码时明确表达变量、函数参数和返回值的预期类型。PEP 484是Python中的一个...
Django 是一个用 Python 编写的高级 Web 开发框架,其设计理念在于通过减少重复工作并提供一个清晰的结构来加速 Web 应用程序的开发速度。Django 遵循 MVC(Model-View-Controller)架构模式的一种变体——MTV...
Django,作为Python最流行的Web开发框架之一,以其高效、安全和易用性著称。而`social-auth-app-django`则是Django生态系统中的一员,专注于社交登录的实现。它利用了`python-social-auth`这个核心库,为Django项目...
Django是一款基于Python语言的开源Web开发框架,它遵循MVC(Model-View-Controller)设计模式,旨在简化Web开发流程,提高开发效率。以下内容将详细探讨Django中的URL配置、反向解析、包含其他URL配置以及正则字符串...
【实验目的】本次实验旨在让学生掌握Python的高阶框架Django,用于构建Web应用程序。通过实验,学生应能够独立使用PyCharm创建Django项目,理解并编写视图,以及启动和管理项目。 【实验要求】实验结束后,学生应...
Python在后端开发中有着重要的角色,通过框架如Django、Flask等,可以快速构建高效稳定的服务器端应用。 "zookeeper"是Apache的一个开源项目,提供分布式服务管理和配置协调。在分布式系统中,ZooKeeper可以帮助...
在Python的Web开发领域,Django是一个非常流行的高级框架,它提供了一系列强大的工具来帮助开发者构建安全、高效的应用。在这个教程中,我们将深入探讨Django中的两个关键概念:CSRF(跨站请求伪造)和Cookie及...
Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Web开发中的一个关键概念是如何管理用户的会话,以及如何在用户的浏览器和服务器之间存储状态信息。在Web开发中,常用的两种方法是使用cookie...
在Python Web开发中,Django框架是一个非常流行的MVT(Model-Template-View)架构的实现,其中View(视图)扮演着核心角色。视图是处理用户请求并生成相应内容的关键部分,它实现了业务逻辑并决定了如何响应用户的...
在Python的Web开发框架Django中,Middleware(中间件)是一种强大的工具,它允许开发者插入自定义的行为到Django的请求处理流程中。标题提到的"django-middleware-global-request-0.2.0.tar.gz"是一个针对Django的...
Django是Python的一种流行Web框架,遵循“DRY”(Don't Repeat Yourself)原则,它提供了一套全面的解决方案,包括模型-视图-控制器(MVC)架构、ORM(对象关系映射)、自动管理后台、表单处理、身份验证和授权等。...
`django-socketio` 是一个扩展,用于在 Django 框架中集成 WebSocket 协议,使得 Web 应用能够实现双向实时通信。WebSocket 提供了一种持久化的连接方式,相较于传统的 HTTP 请求,它能够显著提升数据传输效率和实时...
Django是一个用Python编写的高级Web框架,遵循模型-视图-控制器(MVC)设计模式,用于快速开发安全且可维护的网站。它提供了许多内置功能,如数据库管理、URL路由、模板系统、表单处理以及身份验证和授权。Django...
Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。Django 框架的核心组件有:用于创建...
1. Django框架:Django是Python领域的一款高级Web开发框架,它遵循模型-视图-控制器(MVC)设计模式。Django提供了一整套包括URL路由、数据库模型、模板引擎和表单处理在内的工具,简化了Web应用的开发过程。在这个...
在Python的Web开发领域,Django框架以其高效、灵活和强大的特性深受开发者喜爱。而Django-read-only-admin是一个针对Django框架的扩展库,它允许开发者轻松地将Django管理后台设置为只读模式,以防止未经许可的修改...
`django-buckets-0.1.7.tar.gz` 是一个基于Python编程语言的后端开发库,特别为Django框架设计。Django是著名的Web开发框架,它以快速开发、安全和可维护性著称。`django-buckets` 是Django生态中的一个重要组件,它...
其中,Django框架以其高效、安全和可扩展性,成为了Python Web开发的首选之一。本资源提供了一个基于Django框架的图书商城管理系统的完整源码,以及配套的演示视频,旨在帮助学习者理解和实践Django的Web应用开发。 ...
在Python的Web开发领域,Django是一个非常流行的高级框架,它提供了一系列强大的工具来帮助开发者构建高效、可扩展的Web应用。"Python-Django消息库用于从传输方法中分离内容"这一主题,主要关注的是Django框架中的...
Django是一个高度流行和强大的Web应用框架,它采用模型-视图-控制器(MVC)架构模式,用Python编写。在Django中,处理静态文件和上传文件是常见的需求,而`django-database-storage`则提供了这样的功能,允许开发者...