Я чрезвычайно новичок в Django, но я часами пытался найти решение. Я хочу передать переменную из формы html в бэкэнд, а затем использовать переменную там, чтобы сделать запрос API. Я хочу, чтобы результат API отображался в файле html, а также сверялся со списком (в бэкэнде) и имел результат сравнения с файлом html.
Я хотел бы, чтобы onClick отправил переменную на HTML (это электронное письмо), чтобы все работало без использования нескольких кнопок / формы.
Я полагаю, что у меня несколько ошибок.
Любая помощь приветствуется.
index. html
<body>
<form action="#" method="post">
{% csrf_token %}
<input type="text" class="form-control" id="emailvalue" placeholder="" value=" "name="emailvalue">
<input type="submit" value="Submit" onclick="location.href={% url 'script' %}"><hr>
The Associated IP addresses are:
{% for j in nonduplicate_list %}
<li>{{j}}</li>
{% endfor %}
<hr>
The unblocked IP addresses are:
{% for i in unblocked_ip %}
<li>{{i}}</li>
{% endfor %}
</form>
</body>
views.py
def get_ip(request):
if request.method == 'POST':
input_email = request.POST.get('emailvalue')
three_days_ago = datetime.datetime.now() - datetime.timedelta(days = 30)
time_in_format = three_days_ago.strftime('%Y-%m-%dT00:00:00.000Z')
security_domain = 'https://security.com/api/v1/logs?' + 'q=' + input_email + '&since=' + str(time_in_format)
print(security_domain)
r = requests.get(security_domain)
data = json.loads(r.content)
data1 = str(data)
ip_pattern = re.compile ('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
ip_result = re.findall(ip_pattern, data1)
nonduplicate_list = []
for i in ip_result:
if i not in nonduplicate_list:
nonduplicate_list.append(i)
print(nonduplicate_list)
threat_ip_list = ['1.1.1.1', '168.213.156.142', '2.2.2.2']
unblocked_ip = []
for i in threat_ip_list:
if i in nonduplicate_list:
unblocked_ip.append(i)
print(unblocked_ip)
return render(request, 'index.html', {'nonduplicate_list': nonduplicate_list, 'unblocked_ip': unblocked_ip})
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.button),
path('output/', views.get_ip, name = 'script')
]