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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---