Я пытаюсь добавить поле поиска с этим кодом, у меня ошибка:
Blank result
def home(request):
if 'search' in request.GET:
term = request.GET['search']
name = Products.objects.filter(titulo__icontains=term)
return render(request,'base.html', {'name':name})
в модели:
from django.db import models
class Products(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
def __str__(self):
return self.name
на взглядах
from django.shortcuts import render
from .models import Products
def home(request):
if 'search' in request.GET:
term = request.GET['search']
item = Products.objects.filter(name__icontains=term)
return render(request,'base.html', {'item':item})
если я использую это, я получил ошибку локальная переменная 'name', на которую ссылается перед присваиванием И если я добавлю имя переменной
from django.shortcuts import render
from .models import Products
def home(request):
item=none
if 'search' in request.GET:
term = request.GET['search']
item = Products.objects.filter(name__icontains=term)
return render(request,'base.html', {'item':item})
отредактировал второе представление, при этом у меня нет результатов, используя
{{Products.name}}
в html файле Я также пробую:
def home(request):
query = request.GET.get('search',None)
items = Products.objects.all()
if query is not None:
items = items.filter(
Q(items__contains=query)
)
context = {'items':items}
return render(request, 'base.html', context)
обратитесь к этому - stackoverflow.com/questions/51320242/…
{{ Products.name }} ни в коем случае не будет работать, поскольку вы никогда не отправляете в шаблон ничего под названием Products.





Во всех своих взглядах вы делаете более или менее одну и ту же ошибку:
def home(request):
if 'search' in request.GET:
term = request.GET['search']
name = Products.objects.filter(titulo__icontains=term)
return render(request,'base.html', {'name': name})Здесь вы определяете переменную, например nameв тело if. Но теперь представьте, что условие в операторе if - нет true, тогда оно пропустит тело. Однако после тела if вы использовать переменную name. Теперь, если утверждение неверно, вы используете переменную, которая никогда не была определена.
Вы можете исправить это, например, определив сначала значение по умолчанию:
def home(request):
name = Products.objects.all()
if 'search' in request.GET:
term = request.GET['search']
name = Products.objects.filter(titulo__icontains=term)
return render(request,'base.html', {'name': name})Итак, теперь, если условие не истинно, тогда переменная все еще установлена, поскольку мы определили ее перед в операторе if, здесь, например, мы возвращаем все продукты.
С вашей второй точки зрения происходит то же самое, но теперь виновата переменная item.
«Я ничего не вижу *» - это, вероятно, (неправильное) двойное отрицание?