tengke 发表于 2023-5-5 12:22:22

django 使用selef 报错

views文件
from app.cs import Cs
def cs(request):
    Cs(request,ss)
    return render(request, 'hrr.html', {'deat': ss})



cs文件
from django.db.models import Q
class Cs(object):
    def __init__(self,request,pagesize=17):
      self.n = request.GET.get('q')
      if self.n:
            self.ss = models.Userinfo.objects.filter(
                Q(id__icontains=n) |
                Q(name__icontains=n) |
                Q(password__icontains=n) |
                Q(age__icontains=n) |
                Q(daa__icontains=n)
            )



报错信息
File "D:\软件\djangoProject\app\views.py", line 130, in cs
    return render(request, 'hrr.html', {'deat': ss})
NameError: name 'ss' is not defined
"GET /cs/ HTTP/1.1" 500 68383


isdkz 发表于 2023-5-5 12:22:23

根据您的代码和错误信息,问题出在views.py文件中的cs函数。在cs函数中,您尝试访问未定义的变量ss 。要解决这个问题,您需要在Cs类的__init__方法中返回ss ,并在cs函数中接收它。

首先,修改cs文件中的Cs类,将ss作为属性存储:

from django.db.models import Q
from app import models

class Cs(object):
    def __init__(self, request, pagesize=17):
      self.n = request.GET.get('q')
      self.ss = []
      if self.n:
            self.ss = models.Userinfo.objects.filter(
                Q(id__icontains=self.n) |
                Q(name__icontains=self.n) |
                Q(password__icontains=self.n) |
                Q(age__icontains=self.n) |
                Q(daa__icontains=self.n)
            )


然后,修改views.py文件中的cs函数,将Cs类的实例化后的对象赋值给一个变量,并将ss属性传递给render函数:

from app.cs import Cs

def cs(request):
    cs_instance = Cs(request)
    return render(request, 'hrr.html', {'deat': cs_instance.ss})


现在,错误应该已经解决。这将允许您在hrr.html模板中使用deat变量。
页: [1]
查看完整版本: django 使用selef 报错