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