获取 Django 中的 POST 请求 IP 地址


在本文中,我们将了解如何获取发送 POST 请求的 IP 地址。有时有必要检查安全参数。有时您可能需要禁止某些 IP,或者可能需要检查是否有人正在从单个 IP 发送过多请求。让我们看看如何通过第三方软件包轻松实现此目的。

示例

创建 Django 项目和应用程序。设置URL并执行一些基本操作,例如在 INSTALLED_APPS 中添加应用程序。

我们将不使用任何 Django 表单或模型。

首先,安装django-ipware软件包 −

pip install django-ipware

您不需要为此进行任何配置。

现在,转到模板 → home.html并添加以下内容 −

<!DOCTYPE html>
<html>
   <head>
      <title>tut</title>
   </head>
   <body>

      <form method="post" action= '/'
enctype="multipart/form-data">
               <input type="text" id= "text"/>
            <input type="submit" value="submit"/>
      </form>
   </body>
</html>

在这里,我们只为我们的表单创建了一个前端,该表单将用于检查 IP。

在应用程序的urls.py中 −

from django.urls import path, include
from . import views
urlpatterns = [
   path('',views.home,name='home'),
]

在这里,我们渲染了视图。

views.py中 −

from django.shortcuts import render
from ipware import get_client_ip
def home(request):
   if request.method=="POST":
      # We get ip here
      client_ip, is_routable = get_client_ip(request)
      # Client IP is IP address
print(client_ip, is_routable)
   return render(request,'home.html')

在这里,在 POST 请求中,我们使用get_client_ip()查看请求来自哪个 IP,它返回两个值。

输出

牢记我们正在使用本地主机,您的输出将是 −

[23/Aug/2021 13:34:55] "GET / HTTP/1.1" 200 9999
127.0.0.1 False
[23/Aug/2021 13:34:58] "POST / HTTP/1.1" 200 9999

更新于: 25-Aug-2021

941 浏览

事业起航

完成课程,获得认证

开始学习
广告