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' in request.session:
        questions_asked = request.session['questionlist']
    if request.method == "POST":
        if request.session.get('num_questions',False):      # If there
is a GET var called num_questions
            if request.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_questions session key in case it is hanging
around
        try:
            del request.session['num_questions']
        except KeyError:
            pass
        form = TestForm()
    return render_to_response('test_indexs.html', {'form':form})


###### End Code #######

If there is a problem storing lists in the session variables, 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