Обработка форм Python - PullRequest
       1

Обработка форм Python

1 голос
/ 05 марта 2012

Может ли кто-нибудь помочь мне найти проблему в моем скрипте Python? Этот скрипт просто отправляет запрос из HTML-формы с несколькими переключателями.

import cgi
from file import *
form = cgi.FieldStorage()

print "Content-type: text/html"
print
print """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">"""

print "<html>"
print "<head>"
print "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">"
print "<title></title>"
print "</head>"
print "<body>"

choice = form.getvalue('option')

f = File("onlineVotes.txt")

if choice is None:
    print "<p class='error'>Please choose an option before voting.</p>"
    print "<br><a href='onlinePoll.html' class='backVoteAgain'>Go back</a>"

else:
    if f.exists() == False:
        f.startWrite()
        f.write(choice)
        print choice
        print "<div class='voteBar' style='width: 250px;'>"
        print 1
        print "</div>"

    else:
        f.startRead()
        choice = f.read() + " " + choice
        choiceList = choice.split()

        filterList = []

        for item in choiceList:
            if item not in filterList:
                filterList.append(item)

        choiceDict = {}

        for elem in filterList:
            print "<br>" + elem

            counts = choiceList.count(elem)

            choiceDict['%s' % elem] = counts
            maxValue = max(choiceDict.values())

            barWidth = counts*250/maxValue

            print "<div class='voteBar' style='width: %spx;'>" % str(barWidth)
            print counts
            print maxValue
            print "</div>"

        totalVotes = str(sum(choiceDict.values()))
        print "<br>Total number of votes: " + totalVotes

    f.startWrite()
    f.write(choice)
    f.close()

print "</body>"
print "</html>"

Проблема в том, что когда option1 получает 10 голосов, option2 получает 5 голосов, а option3 получает 3 голоса, значение max (choiceDict.values ​​()) равно 10, что является ожидаемым значением. Однако когда вариант 1 получает 10 голосов, вариант 2 получает 11 голосов, а вариант 3 получает 5 голосов, максимальное значение для варианта 1 остается равным 10, в то время как он равен 11 для варианта 2 и варианта 3.

Где я сделал не так?

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