我尝试使用此代码添加搜索框,但出现错误:
空白结果
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})
如果我用这个我得到了错误 分配前已引用本地变量“名称” 如果我添加了变量名
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)
答案 0 :(得分:2)
在所有视图中,您或多或少会犯相同的错误:
function slurm_job_submit(job_desc, part_list, submit_uid)
slurm.log_info("job submit plugin called")
if job_desc.time_limit >= 4294967294 then
slurm.log_user("Please enter a valid time limit, your time: %d", job_desc.time_limit)
return slurm.ESLURM_INVALID_TIME_LIMIT
end
return slurm.SUCCESS
end
function slurm_job_modify(job_desc, job_rec, part_list, modify_uid)
end
slurm.log_info("initialized")
您在此处定义一个变量,例如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
语句中的条件 not 为true,那么它将跳过主体。在if
正文之后,您使用 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})
语句的之前定义了变量,例如,我们返回的不是所有乘积。 / p>
在您的第二个视图中,同样的情况发生了,但是罪魁祸首是if
变量。