Django: цикл вызова шаблона + представление - PullRequest
0 голосов
/ 19 апреля 2011

Я делаю многостраничный опрос. У меня есть база данных, в которой есть столбец с именем page, и на каждой странице есть 4 вопроса. После того, как пользователь ответит на все вопросы на странице, он нажимает «Далее» и переходит на следующую страницу.

Я могу запросить базу данных, чтобы выяснить, сколько страниц мне нужно сгенерировать, но я не уверен, как зациклить процесс рендеринга шаблона.

Вот мой код:

Пользователь вводит:

def index(request):
latest_poll_list = Poll.objects.filter(page=1)
t = loader.get_template('index.html')
c = Context({
    'latest_poll_list': latest_poll_list,
})
return HttpResponse(t.render(c))

... который генерирует этот шаблон:

    <ul>

<form action="/first/vote/" method="post">
{% csrf_token %}
{% for poll in latest_poll_list %}
    <li>{{ poll.question }}</li>
        {% for choice in poll.choice_set.all %}
            <input type="radio" name="choice{{ poll.id }}" id="{{poll.id}}choice{{ forloop.counter }}" value="{{ choice.id }}" />
            <label for="choice{{ forloop.counter }}">{{ choice.choice }}</label><br />
        {% endfor %}
{% endfor %}
    <input type="submit" value="Vote" />
</form>

</ul>

... выбор пользователя обрабатывается здесь:

def vote(request):
intra_page_key = request.POST['choice1']+','+request.POST['choice2']+','+request.POST['choice3']
request.session['p1'] = intra_page_key
return HttpResponse(request.session['p1'])

Как мне повторить эту последовательность для второй страницы моего опроса?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011
#urls.py
(r'^(?P<pollid>\d*)/$', 'app.views.index'),

#views.py
def index(request, pollid):    
    latest_poll_list = Poll.objects.filter(page=pollid)
    t = loader.get_template('index.html')
    c = Context({
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(t.render(c))

также было бы неплохо прочитать по ярлыку "get or 404"

http://docs.djangoproject.com/en/dev/intro/tutorial03/?from=olddocs#a-shortcut-get-object-or-404

0 голосов
/ 19 апреля 2011

Возможно, вы захотите взглянуть на FormWizard

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...