What about setting session variable to None, then setting it back to a
new list object with the questions in it, just to see if it's a
problem with it not realizing that the list has been modified?

I don't think this is the best solution either, but would be a good
test to see if it's just not realizing that the variable has changed,
and possibly another workaround if it works.



On Jul 26, 1:09 pm, flynnguy <[EMAIL PROTECTED]> wrote:
> Thanks for responding, I should have mentioned previously that I did
> try putting 'SESSION_SAVE_EVERY_REQUEST=True' in my settings file but
> that didn't work. Now that I read your e-mail, I also tried setting
> request.session.modified = True right after my append but that didn't
> work either.
>
> I meant to reply to the list a while ago to tell my work around but I
> forgot, I guess now is as good a time as any...
>
> I ended up just using a string that I concatenate the new values to in
> a comma separated list:
> request.session['questions_asked'] += ','+str(question.id)
> (obviously you would have to initialize it for the first question)
>
> Then to convert that string to an actual list I do the following:
> for item in csv.reader([request.session['questions_asked']]):
>     question_list = item
>
> I tried doing just: csv.reader([request.session['questions_asked']])
> [0] but it's not a real list and in the interpreter, I get: TypeError:
> unsubscriptable object. So if anyone knows of a cleaner, more pythonic
> way, I'm all ears. (Because I'm guessing it's not very pythonic)
>
> So that's how I'm getting around it for now, I'd love to hear anyone
> else's thoughts on the subject.
> -Chris
>
> On Jul 26, 12:23 pm, "[EMAIL PROTECTED]"
>
> <[EMAIL PROTECTED]> wrote:
> > You might want to try adding:
> > request.session.modified = True ( or modify your settings file to save
> > every request by setting the SESSION_SAVE_EVERY_REQUEST to True )
>
> > Because from this note from DjangoSessiondocs:
> > #Sessionis modified.
> > request.session['foo'] = {}
>
> > # Gotcha:Sessionis NOT modified, because this alters
> > # request.session['foo'] instead of request.session.
> > request.session['foo']['bar'] = 'baz'
>
> > On Jul 9, 10:50 am, flynnguy <[EMAIL PROTECTED]> wrote:
>
> > > Ok, I upgraded to the development version of django and that didn't
> > > help. I then started to try and trim out the code so it was of a more
> > > manageable size to post here. It's still rather large but if it helps
> > > anyone visualize what I'm talking about, here it is:
>
> > > ## test_indexs.html
> > > <h4>Take the Test</h4>
> > > <form action="." method="post">
> > > <table>
> > > {{ form }}
> > > </table>
> > > <input type="submit" value="Take Test" />
> > > </form>
>
> > > ## take_tests.html
> > > {{ questions_asked }}
>
> > > {% if score_page %}
> > >     {{ num }}
> > >     <h1 id="your_score">Your score is: {{ score|floatformat:2 }}%
> > > ({{ num_correct }}/{{ total }})</h1>
> > >     <img id="score_tach" src="/flight/grade/tach.gif?
> > > score={{ score }}" />
> > > {% else %}
>
> > >     <h3>{{ question.id }} {{ question.question }}</h3>
> > >     <form method="post" action=".">
> > >     <input type="hidden" name="number_of_questions" value="{{ num }}" /
>
> > >     <ul>
> > >     {% for answer in answers %}
> > >         <li class="answers"><input type="submit" name="{{ answer.0 }}"
> > > value="{{ answer.1 }}" /></li>
> > >     {% endfor %}
> > >     </ul>
> > >     </form>
> > > {% endif %}
>
> > > ## views.py
> > > def sessiontest(request):
> > >     if 'questionlist' inrequest.session:
> > >         questions_asked =request.session['questionlist']
> > >     if request.method == "POST":
> > >         ifrequest.session.get('num_questions',False):      # If there
> > > is a GET var called num_questions
> > >             ifrequest.session['current_question'] 
> > > <request.session['num_questions']:
> > >                request.session['current_question'] += 1
> > >                 question = Question.objects.order_by('?')[0]    # Get
> > > a random question
> > >                request.session['previous_question'] = question
> > >                 answers = list(enumerate([question.correct_answer,
> > > question.other_answer_1, question.other_answer_2]))
> > >                 shuffle(answers)
> > >                 try:
> > >                    request.session['questionlist'] =
> > > questions_asked.append(int(question.id))
> > >                 except AttributeError:
> > >                    request.session['questionlist'] =
> > > [(int(question.id)),]
>
> > >                 return render_to_response('take_tests.html',
> > > {'current_num':request.session['current_question'], \
>
> > > 'num':request.session['num_questions'], \
>
> > > 'question':question, \
>
> > > 'first_page':False, \
>
> > > 'questions_asked':questions_asked, \
>
> > > 'answers': answers})
> > >             else:
> > >                 score = (float(request.session['num_correct'])/
> > > float(request.session['num_questions']))*100
> > >                 return render_to_response('take_tests.html',
> > > {'correct':request.session['num_correct'], \
>
> > > 'total':request.session['num_questions'], \
>
> > > 'score':score, \
>
> > > 'score_page':True, \
>
> > > 'num_correct':request.session['num_correct'] })
> > >         else:   # No num_questions var set... show/process form
> > >             form = TestForm(request.POST)
> > >             if form.is_valid():
> > >                 num_questions =
> > > form.cleaned_data['number_of_questions']
> > >                request.session['num_questions'] = num_questions
> > >                request.session['current_question'] = 1
> > >                request.session['num_correct'] = 0
> > >                 question = Question.objects.order_by('?')[0]    # Get
> > > a random question
> > >                request.session['previous_question'] = question
> > >                 answers = list(enumerate([question.correct_answer,
> > > question.other_answer_1, question.other_answer_2]))
> > >                 shuffle(answers)
> > >                request.session['previous_answers'] = answers
> > >                request.session['questionlist'] = [int(question.id),]
> > > #                topics = request.POST['topics']
> > >                 return render_to_response('take_tests.html',
> > > {'current_num':request.session['current_question'], \
>
> > > 'num':num_questions, \
>
> > > 'first_page':True, \
>
> > > 'questions_asked':request.session['questionlist'], \
>
> > > 'question':question, 'answers': answers,})
> > >     else:
> > >         # Remove num_questionssessionkey in case it is hanging
> > > around
> > >         try:
> > >             delrequest.session['num_questions']
> > >         except KeyError:
> > >             pass
> > >         form = TestForm()
> > >     return render_to_response('test_indexs.html', {'form':form})
>
> > > ###### End Code #######
>
> > > If there is aproblemstoring lists in thesessionvariables, then I
> > > can look at some other method. I just thought this would be the best
> > > solution. Also it works some of the time, just not all of the time. I
> > > don't understand why it's getting set to 'None'.
> > > -Chris


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to