在 Django 中获取 POST 请求 IP 地址

在本文中,我们将看到如何从我们收到 POST 请求的地方获取 IP 地址。有时检查安全参数很重要。有时您可能需要禁止某些 IP,或者您可能需要检查是否有人从单个 IP 发送过多请求。让我们看看如何使用第三方软件包轻松完成。

示例

创建一个 Django 项目和一个应用程序。设置网址并执行一些基本操作,例如在 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 中-

fromdjango.urlsimport path, include

from . import views

urlpatterns = [

   path('',views.home,name='home'),

]

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

在views.py 中-

fromdjango.shortcutsimport 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

以上是 在 Django 中获取 POST 请求 IP 地址 的全部内容, 来源链接: utcz.com/z/331719.html

回到顶部