我尝试添加一个搜索框与此代码的我得到了错误:
空白结果
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)
1条答案
按热度按时间siotufzp1#
在你所有的观点中,你或多或少犯了同样的错误:
这里你定义了一个变量,例如
name
in theif
body.但是现在假设if
语句中的条件是 not true,那么它将跳过body.但是在if
body之后你 * 使用 *name
变量.现在如果语句不是true,你使用一个从未定义过的变量.您可以修复此问题,例如,首先定义默认值:
现在,如果条件不为真,则变量仍被设置,因为我们在
if
语句之前定义了它,例如,这里我们返回than all products。在第二个视图中,也发生了同样的情况,但现在罪魁祸首是
item
变量。