Результаты поиска не отображаются в шаблоне (Django)
Я очень новичок в Django и создаю очень простой проект. Однако, "поисковая" часть моего проекта имеет некоторые проблемы. Каждый раз, когда я пытаюсь выполнить поиск, он перенаправляет меня на шаблон поиска, но не показывает данные из базы данных. Нет сообщения об ошибке. Вот мой код...
models.py
class Userprofile(models.Model):
use_id = models.IntegerField()
first_name = models.CharField(max_length = 50)
last_name = models.CharField(max_length = 50)
position = models.CharField(max_length = 50)
email = models.CharField(max_length= 100)
password = models.CharField(max_length= 100)
def __str__(self):
return self.first_name
account_list.html Это шаблон, в котором находится строка поиска
<div class="search">
<form method="post" action="{% url 'account_search' %}" autocomplete="off">
<br>
{% csrf_token %}
<input type="text" name="acc_search" placeholder="Search Account">
<input type="submit" name="submit" value="Search" style="width: 24%"></p>
</form>
</div>
<hr>
views.py
def account_search(request):
if request.method == "POST":
account_search = request.POST.get('acc_search')
accounts = Userprofile.objects.filter(use_id__contains=account_search) | Userprofile.objects.filter(first_name__contains=account_search) | Userprofile.objects.filter(last_name__contains=account_search) | Userprofile.objects.filter(position__contains=account_search) | Userprofile.objects.filter(email__contains=account_search)
return render(request, 'core/account_search.html', {'account_search': account_search, 'accounts':accounts})
else:
return render(request, 'core/account_search.html', {})
account_search.html `
{% if account_search %}
<div class="main-right">
<div class="h-1">
<h1>'{{ account_search }}' in Accounts</h1>
</div>
<table rules="all" style="border: 1px">
<thead>
<td>Personnel's ID</td>
<td>Name</td>
<td>Position</td>
<td>Email</td>
<td>Action</td>
</thead>
<tbody>
{% for userprofile in userprofiles %}
<tr>
<td>{{ userprofile.use_id }}</td>
<td>{{ userprofile.first_name }}
{{ userprofile.last_name }}</td>
<td>{{ userprofile.position }}</td>
<td>{{ userprofile.email }}</td>
<td class="action_btn">
<a href="account_edit/{{ userprofile.id }}" class="edit_btn">Edit</a>
<a href="account_delete/{{ userprofile.id }}" class="delete_btn">Delete</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<h1 class="h1-else">You forgot to enter the text in the input box.</h1>
{% endif %}
Я искал в Google и пытался, но не могу найти никакого решения или обсуждения того, как я могу это исправить.
Надеюсь, кто-нибудь сможет мне помочь, спасибо. И извините за мой плохой английский.
Вы передаете accounts
в качестве контекстной переменной из представления, но в шаблоне вы выполняете цикл через userprofiles
. Следовательно, измените эту строку в шаблоне:
{% for userprofile in userprofiles %}
to
{% for userprofile in accounts %}
Вы передаете учетные записи как "accounts" в представлении, но ищете "userprofiles" в шаблоне. Вы должны использовать "accounts" и в шаблоне.
{% for userprofile in accounts %}