Django views.py if statement не передает значение в HTML-файл
На моей странице Django views.py есть код, где пользователь вводит ID сотрудника с помощью HTML-формы, которая отправляет значение в views.py. Используя его, я проверяю, есть ли ID сотрудника в базе данных, перебирая каждый ID в базе данных, добавляя его в пустой list и используя оператор if.
Часть, где я получаю ID сотрудника, работает нормально, и ID добавляется в list. Однако, когда я использую оператор if для проверки того, является ли полученный ID сотрудника частью списка, он не работает. Несмотря на то, что это работает в Jupyter Notebook, когда я тестировал то же самое.
Вот код:
views.py:
from django.shortcuts import render
import pandas as pd
dat = pd.read_csv('/Users/Lenovo/Desktop/Cakewala DB/CW_Attendance/AttendanceApp/test_employee.csv')
# Create your views here.
def home(request):
employee_id = request.POST.get('id')
print(employee_id)
id_list = []
for id in dat["ID"]:
id_list.append(id)
print(id_list)
if employee_id in id_list:
print("yes")
employee_row = dat.loc[dat["ID"] == employee_id]
employee_name = employee_row.iat[0, 1]
return render(request, 'attendance/index.html', {
"employee_id": employee_id,
"employee_name": employee_name
})
return render(request, 'attendance/index.html')
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Attendance - Home</title>
</head>
<body>
<h1>Cakewala Attendance</h1>
<form method="POST">
{% csrf_token %}
<label for="id">Employee ID</label> <br>
<input type="number" name="id" max="9999" min="1000">
<input type="submit" id="submit-btn"> <br>
<p id="name">{{ employee_id }}: {{ employee_name }}</p>
<input type="checkbox">
</form>
</body>
</html>
test_employee.csv:
ID, NAME
1001, John Doe
1002, Jane Doe
Command Line Output when I pass employee ID as 1001:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
April 15, 2022 - 13:22:00
Django version 4.0.4, using settings 'CW_Attendance.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
1001
[1001, 1002]
[15/Apr/2022 13:33:17] "POST / HTTP/1.1" 200 598
Мне нужно отобразить ID и имя сотрудника в HTML файле, любая помощь будет очень признательна!
Попробуйте это
dat = pd.read_csv('/Users/Lenovo/Desktop/Cakewala DB/CW_Attendance/AttendanceApp/test_employee.csv')
def home(request):
employee_id = request.POST.get('id',None)
print(employee_id)
if employee_id is not None:
for id,name in zip(dat["ID"],dat["NAME"]):
if id == employee_id:
return render(request, 'attendance/index.html', {
"employee_id": id,
"employee_name": name,
"is_result":True
})
return render(request, 'attendance/index.html', {
"employee_id": employee_id,
"employee_name": "No user Found with that ID",
"is_result":True
})
return render(request, 'attendance/index.html',{'is_result':False})
Шаблон
<!DOCTYPE html>
<html>
<head>
<title>Attendance - Home</title>
</head>
<body>
<h1>Cakewala Attendance</h1>
<form method="POST">
{% csrf_token %}
<label for="id">Employee ID</label> <br>
<input type="number" name="id" max="9999" min="1000">
<input type="submit" id="submit-btn"> <br>
<input type="checkbox">
</form>
{% if result %}
<p id="name">{{ employee_id }}: {{ employee_name }}</p>
{% endif %}
</body>
</html>