django 2搜索表单未绑定本地错误位于/

y53ybaqx  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(94)

我尝试添加一个搜索框与此代码的我得到了错误:
空白结果

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)
siotufzp

siotufzp1#

在你所有的观点中,你或多或少犯了同样的错误:

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})

这里你定义了一个变量,例如namein the if body.但是现在假设if语句中的条件是 not true,那么它将跳过body.但是在if body之后你 * 使用 * name变量.现在如果语句不是true,你使用一个从未定义过的变量.
您可以修复此问题,例如,首先定义默认值:

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语句之前定义了它,例如,这里我们返回than all products。
在第二个视图中,也发生了同样的情况,但现在罪魁祸首是item变量。

相关问题