python - Don't reload the view Django -


i'm doing set of questions, every question answered yes or no. depends of answer other different question , process repeat several times. problem every time user sends answer view reloaded , show first question. i'm new in django , web programming. answers.

class expertoview(formview):     template_name = "sisexperto.html"     form_class = formexpert     success_url = 'sisexperto'     def __init__(self):         self.arbol = eval(self.filetostr('sisexperto/enfermedades.txt')) #evalua el archivo         self.nodoactual = self.arbol         self.pregunta = self.nodoactual[0]      def form_valid(self, form):         #this method calle when valid data has been posted         #it should return httpresponse         if len(self.nodoactual) == 3:             [self.pregunta, yesnode, nonode] = self.nodoactual              if form.is_valid():                  form_data = form.cleaned_data                 respuesta = form_data.get('campo')                 if respuesta == 'y':                     self.nodoactual = yesnode                 else:                      self.nodoactual = nonode                 self.pregunta = self.nodoactual[0]          #el siguiente return es obligatorio         return super(expertoview, self).form_valid(form)      def get_context_data(self, **kargs):         """ use add context """         context = super(expertoview, self).get_context_data(**kargs)         context["pregunta"] = self.pregunta         return context 

you should bit more on how framework , http works.

first, http stateless, doesn't remember state of last request. "hack" remember did last summer, meant request, use sessions.

secondly, every http request django going instantiate new expertoview. if update self.nodoactual attribute, next request (which doesn't know nothing last request) going start self.arbol. here should use session in view.

        # maybe this?         if form.is_valid():              form_data = form.cleaned_data             respuesta = form_data.get('campo')             if respuesta == 'y':                 self.requests.session['nodoactual'] = yesnode             else:                  self.requests.session['nodoactual'] = nonode             self.pregunta = self.nodoactual[0] 

godspeed.


Comments

Popular posts from this blog

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -