Django Framework Python - PullRequest
       1

Django Framework Python

0 голосов
/ 15 октября 2019

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

def search(request):
    if request.method== 'POST':
        srch = request.POST['srh']

        if srch:
            match = Regiest_Form.objects.filter(Q(std_name__iexact=srch))

            if match:
                return render(request, 'Regiest_app/search.html', {'sr':match})
            else:
                messages.error(request,'no result')
        else:
            return HttpResponseRedirect('/search/')
    else:
        return render(request, 'Regiest_app/search.html')

1 Ответ

0 голосов
/ 15 октября 2019

Ух ты, ты упускаешь целую часть цели Джанго. Используя форму django, вы можете делегировать всю свою проверку вашей форме. Если результатов не найдено, ваши ошибки доступа с использованием 'form.errors' и 'form.non_field_errors` в вашем шаблоне.

In forms.py

from django import forms
from .models import Regiest_Form

class RegisterSearchForm(forms.Form):
   search=forms.Charfield(required=True)

    def clean(self):
        qs=Regiest_Form.objects.filter(Q(std_name__iexact=self.cleaned_data.get('search'))
        if qs.exists():
            self.add_error(field=None,error=forms.ValidationError("No results found"))
        else:
            return self.cleaned_data
    @property
    def results(self):
        return Regiest_Form.objects.filter(Q(std_name__iexact=self.cleaned_data.get('search'))

В вашем views.py

from .forms import RegisterSearchForm
def search(request):
    form = RegisterSearchForm(request.POST) if request.method== 'POST' else RegisterSearchForm()
    if request.method== 'POST' and form.is_valid():
        return render(request, 'Regiest_app/search.html',{'sr':forms.results, 'form':form})
    return render(request, 'Regiest_app/search.html',{'form':form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...