如何使用for循环增加HTML Django模板中的值(按下按钮)



我实际上正在为学校项目编程一个问题网站。我从官方网站遵循了Django教程的第一步,但我现在正在尝试自己改进。

我在每个DIV中添加了一个"投票"按钮(在for循环中创建)我想在我的视图中增加。

一些代码将更加解释。

所以这是我的详细信息。

{% block content %}
    <h2>{{ question.question_text }}</h2>
    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
    <form action="{% url 'polls:vote' question.id %}" method="post">
        {% csrf_token %}
        {% for choice in question.choice_set.all %}
            <div class="choices">
                <label for="">{{ choice.choice_text }}</label><br>
                <p>{{ choice.votes }} vote{{ choice.votes|pluralize }}</p>
                <input type="submit" name="vote" id=""  value="Vote">
            </div>
        {% endfor %}
        <br>
    </form>
    <a href="{% url 'polls:choice' question.id %}">Add a choice</a>
{% endblock %}

这是我的观点。投票得出正确的问题,(应该)获得正确的选择的"投票"价值来增加:

def vote(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST['vote'])
    except (KeyError, Choice.DoesNotExist):
        return render(request, 'polls/detail.html', {
            'question': question,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        return HttpResponseRedirect(reverse('polls:detail', args=(question.id,)))

我的"选择"对象在这样的对象中声明了我的"投票"值:

class Choice(models.Model):
    votes = models.IntegerField(default=0)

实际上,当我按下"投票"按钮时,我会收到此错误消息:

invalid literal for int() with base 10: 'Vote'

我是Django的真正初学者,所以请好好!

您的错误在行中:

<input type="submit" name="vote" id=""  value="Vote">

因为您正在使用

selected_choice = question.choice_set.get(pk=request.POST['vote'])

request.POST['vote']将因此返回"投票"。这是因为它获取定义为value="Vote"<input>的值,但是您的视图语句需要一个整数值。

要解决您的问题,您需要通过value字段中的选择ID,例如:

<input type="submit" name="vote" id=""  value="{{ choice.id }}">

我建议您使用button而不是input为:

<button type="submit" name="vote" id=""  value="{{ choice.id }}">Vote</button>

相关内容

  • 没有找到相关文章

最新更新