এই আর্টিকেলে, আমরা দেখব কিভাবে আমরা POST রিকোয়েস্ট আসা জায়গার IP অ্যাড্রেস পেতে পারি। এটি কখনো কখনো সিকিউরিটি প্যারামিটার চেক রাখতে গুরুত্বপূর্ণ। কখনো আপনাকে কিছু IP ব্যান করতে হতে পারে বা আপনি চেক করতে চাইতে পারেন কেউ একটি IP থেকে অতিরিক্ত রিকোয়েস্ট পাঠাচ্ছে কিনা। চলুন দেখি এটি একটি থার্ড-পার্টি প্যাকেজের সাথে কত সহজে করা যায়।
উদাহরণ
একটি ডজ্যাঙ্গো প্রজেক্ট এবং একটি অ্যাপ তৈরি করুন। urls সেট আপ করুন এবং INSTALLED_APPS-এ অ্যাপ যোগ করা সরি afor কিছু বেসিক কাজ করুন।
আমরা কোনো ডজ্যাঙ্গো ফর্ম বা মডেল ব্যবহার করব না।
প্রথমে, django-ipware প্যাকেজ ইনস্টল করুন:
pip install django-ipware
এটির জন্য আপনাকে কোনো কনফিগারেশন দরকার নেই।
এখন, Templates → 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":
# আমরা এখানে IP পাই
client_ip, is_routable = get_client_ip(request)
# Client IP হলো IP অ্যাড্রেস
print(client_ip, is_routable)
return render(request, 'home.html')
এখানে, POST রিকোয়েস্টে, আমরা রিকোয়েস্ট কোথা থেকে আসছে সেটা देखने জন্য get_client_ip() ব্যবহার করেছি, এটি দুটি মান রিটার্ন করে।
আউটপুট
এই fakt রেখে যে আমরা localhost ব্যবহার করছি, আপনার আউটপুট হবে:
[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