Страница поиска нескольких слов в Django - PullRequest
0 голосов
/ 11 июля 2019

В основном мне нужно создать страницу поиска в django, в которой есть поля ввода, такие как rollno, имя, класс, имя учителя.Пользователь может ввести любую или все детали и нажать кнопку поиска.Он должен перейти к другому html-шаблону и просмотреть сведения о студентах, соответствующие ему введенным данным.

У меня есть html-страница search.html и results.html.

search.html

<input type="text" name="roll_no" class="form-control" placeholder="roll no" >
<input type="text" name="name" class="form-control" placeholder="name" >
<input type="text" name="class" class="form-control" placeholder="class" >
<input type="text" name="teacher_name" class="form-control" placeholder="teacher's name" >

results.html В нем должны отображаться только сведения о студентах, которые соответствуют введенному тексту, введенному в search.html, а не все

Roll_no:<span class="float-right">{{post.roll_no}}
 Name:<span class="float-right">{{post.name}}
 Class:<span class="float-right">{{post.class}}
 Teacher's_name:<span class="float-right">{{post.t_name}}
 Father's_name:<span class="float-right">{{post.fa_name}}

Пожалуйста, помогите, видео и учебники, которые я смотрел до сих пор, показывают поиск, который выполняет поиск сообщений и показывает их на той же самой странице.

Ответы [ 3 ]

0 голосов
/ 11 июля 2019

Кажется, что две страницы правильные, в бэкэнде вы можете написать функцию django, например, где вы читаете данные формы, если есть запрос на публикацию, иначе она отобразит страницу search.html.Я предполагаю, что вы не хотите использовать базу данных, задача которой просто прочитать и отобразить.

def returnResults(request):
    if request.method == 'POST':
         rollNo = request.POST['roll_no']
         name = request.POST['name']
         class_ = request.POST['class']
         teacherName = request.POST['teacher_name']
         post = {"roll_no" : rollNo, "name":name, "class":class_, "teacher_name":teacherName}
         return render(request, 'search.html',{"post":post})
    else: 
        return render(request, 'search.html')
0 голосов
/ 11 июля 2019

Я думаю, вы хотите узнать о django-filter ! Который также позволит вам иметь форму фильтра в верхней части отображения того, что он нашел.

0 голосов
/ 11 июля 2019

вы можете сделать так в ваших представлениях:

from django.db.models import Q
def search(request):
     roll_number = request.GET.get('roll_no')
     name = request.GET.get('name')
     class = request.GET.get('class)
     teacher_name = request.GET.get('teacher_name')

     search_results = YourModel.objects.filter(Q(roll_no=roll_number)|Q(name__iexact=name)|Q(class=class)|Q(teacher_name__iexact = teacher_name))
     return render(request,'resuts.html',{'search_results':search:results})

шаблон

{% for result in search_results %}
Roll_no:<span class="float-right">{{result.roll_no}}
 Name:<span class="float-right">{{result.name}}
 Class:<span class="float-right">{{result.class}}
 Teacher's_name:<span class="float-right">{{result.t_name}}
 Father's_name:<span class="float-right">{{result.fa_name}}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...