ZetCode

Django HttpRequest

最后修改于 2023 年 1 月 9 日

Django HttpRequest 教程展示了如何在 Django 中使用 HttpRequest 对象。

Django

Django 是一个高级 Python Web 框架。它鼓励快速开发和清晰、实用的设计。Django 的主要目标是简化复杂、数据库驱动的网站的创建。

Django 由 Django Software Foundation 维护。

Django HttpRequest

Django 使用请求和响应对象在系统之间传递状态。当请求一个页面时,Django 会创建一个 HttpRequest 对象,其中包含有关请求的元数据。这包括请求方法、用户代理、地址或 cookie。

稍后 Django 会加载适当的视图,将 HttpRequest 作为第一个参数传递给视图函数。每个视图都必须返回一个 HttpResponse 对象。

Django HttpRequest 示例

在下面的示例中,我们创建一个 Django 应用程序,该应用程序检查 HttpRequest 对象中发送的数据。

$ mkdir httprequest
$ cd httprequest
$ mkdir src
$ cd src

我们创建项目和 src 目录。然后我们进入 src 目录。

$ django-admin startproject httprequest .

我们在 src 目录中创建一个新的 Django 项目。

$ cd ..
$ pwd
/c/Users/Jano/Documents/pyprogs/django/httprequest

我们进入项目目录。

$ tree /f
src
│   db.sqlite3
│   manage.py
│
└───httprequest
        settings.py
        urls.py
        views.py
        wsgi.py
        __init__.py

这是项目目录的内容。

注意: Django 的做法是将功能放入应用程序中,这些应用程序使用 django-admin startapp 创建。在此教程中,我们不使用应用程序来简化示例。我们专注于演示如何检查 HttpRequest

src/httprequest/urls.py
from django.contrib import admin
from django.urls import path
from .views import data

urlpatterns = [
    path('admin/', admin.site.urls),
    path('data/', data, name='data'),
]

我们添加了一个新的 data/ 路径;它会调用 views.py 模块中的 data 函数。

src/httprequest/views.py
from django.http import HttpResponse

def data(request):

    path = request.path
    scheme = request.scheme
    method = request.method
    address = request.META['REMOTE_ADDR']
    user_agent = request.META['HTTP_USER_AGENT']

    msg = f'''
<html>
Path: {path}<br>
Scheme: {scheme}<br>
Method: {method}<br>
Address: {address}<br>
User agent: {user_agent}<br>
</html>
'''

    return HttpResponse(msg, content_type='text/html', charset='utf-8')

data 函数内部,我们获取请求的路径、协议、方法、地址和用户代理。我们将其返回在 HttpResponse 中。

注意: 对于这个简单的示例,我们手动构建了 HTML 字符串。HTML 响应通常使用模板系统创建;Django 使用 Jinja。

$ python manage.py runserver

我们运行服务器并导航到 http://127.0.0.1:8000/data/

在本文中,我们演示了如何在 Django 中处理 HttpRequest 对象。