如何在函数中同时使用两个(self,request)参数


class searchbox:
def search(self , request):
self.name=[]
query1 = request.GET['search']
queryset = F360.objects.all()
for  items in queryset:
if query1 == items.id:
finid =items.f0_id
if finuid is not None:
try:
url = "*******"
querystring = {********}
response = requests.request("GET", url, params=querystring)
jData = response.json()
name.append(jData["name"])
except:
return redirect('loggedin')
else:
continue
context =  {'query1':query1,  "name":self.name}
return render(request , 'search.html', context)
def details(self , request):
name = self.name
return render(request , "details.html",  "name":name})

我正在尝试创建一个django-webapp。我用一个名为search的方法定义了一个类,用于进行api调用和从数据库中搜索,这非常好。问题是我想在另一个称为details的函数中使用定义的变量,但self和request都必须是第一个参数。我该如何解决这个问题。

方法中声明的变量是方法作用域的本地变量。

当方法完成或返回时擦除。

Http是一个无状态协议,在返回响应后,您无法维护状态。

但是您可以使用会话存储状态

并设置和获得像字典

你可以做

class searchbox:
def search(self , request):
self.name=[]
query1 = request.GET['search']
queryset = F360.objects.all()
for  items in queryset:
if query1 == items.id:
finid =items.f0_id
if finuid is not None:
try:
url = "*******"
querystring = {********}
response = requests.request("GET", url, params=querystring)
jData = response.json()
# setting session data
request.session["name"] = jData["name"] #setting session here
name.append(jData["name"])
except:
return redirect('loggedin')
else:
continue
context =  {'query1':query1,  "name":self.name}
return render(request , 'search.html', context)
def details(self , request):
#access session data
name = request.session.get("name") 
return render(request , "details.html",  "name":name})

最新更新