django2搜索表单UnbundLocalError位于/
我试图添加一个带有以下代码的搜索框,但出现错误: 空白结果 在模型中:django2搜索表单UnbundLocalError位于/,django,Django,我试图添加一个带有以下代码的搜索框,但出现错误: 空白结果 在模型中: 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
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)
在你所有的观点中,你或多或少犯了同样的错误:
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})
因此,如果条件不是真的,那么仍然设置变量,因为我们在if
语句之前定义了它,例如,这里我们返回的比所有产品都多
在您的第二个视图中,同样的情况也会发生,但现在罪魁祸首是
项
变量。“我什么也看不到*”可能是(不正确的)双重否定?请参阅此-{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})
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})