Как использовать оба параметра (self, request) в функции - PullRequest
0 голосов
/ 11 ноября 2019
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. Я определил класс с методом, называемым search, для выполнения вызовов API и поиска по базам данных, который работает отлично. Проблема в том, что я хочу использовать определенные переменные в другой функции, называемой detailsно self и request оба должны быть первым параметром. как мне обойти это.

1 Ответ

0 голосов
/ 11 ноября 2019

Переменные, объявленные в методе, являются локальными для области действия метода.

Удаляется после завершения или возврата метода.

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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...