Отображение флажка с выбранным элементом как проверено - PullRequest
0 голосов
/ 30 августа 2011

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

class InfoPage(BasePage):
    title = 'One Macnica'

  def get(self):
    self.write_page_header()

    hobbies_list = Hobby.all().fetch(100)



    template_values = {"hobbies_list": hobbies_list}
    path = os.path.join(os.path.dirname(__file__), 'templates')
    path = os.path.join(path, 'hobby.html')
    self.response.out.write(template.render(path, template_values))
    self.write_page_footer()

  def post(self):

    self.write_page_header()

    hobbies_list = Hobby.all().fetch(100)


    if self.request.get("hobby"):
      hobby_name = self.request.get('hobby')
      new_hobby = Hobby(name=hobby_name.strip(), key_name = hobby_name.strip())

      #fetch attendee and add new hobby
      attendee_query = Attendee.gql('WHERE email = :1',
          users.get_current_user().email())
      attendee = attendee_query.fetch(1)
      attendee = attendee.pop()
      hobbies = attendee.hobbies
      hobbies.append(new_hobby.key())
      attendee.hobbies = hobbies
      #eliminate the dupliate
      hobbies = list(set(hobbies))
      attendee.hobbies = hobbies
      attendee.put()



    template_values = {"hobbies_list": hobbies_list}
    path = os.path.join(os.path.dirname(__file__), 'templates')
    path = os.path.join(path, 'hobby.html')
    self.response.out.write(template.render(path, template_values))
    self.write_page_footer()

hobby.html является следующим

<h1 id="header">One Macnica</h1>
<p>Welcome to One Macnica, a place dedicated to connecting Macnica as 1.
</p>
<form name="hobby" action="/hobby" method="post">


{% for hobby in hobbies_list %}
   <input type="checkbox" name = "{{hobby.name}}"/>{{hobby.name}}<br/>
{% endfor %}


<input type="submit" value="Select Hobbies">
</form>

В настоящее время я думаю о создании списка для контрольного списка хобби, который сравнивает весь список хобби со списком хобби участника и, если он существует, вернуть проверено, а если нет, вернуть ноль.У меня проблемы с кодированием, и я не знаю, лучший ли это способ.

любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Самый простой способ сделать это - использовать библиотеку форм, например, формы Django или WTForms. Нет необходимости писать большое количество кода для обработки форм, когда это уже сделано для вас.

1 голос
/ 30 августа 2011

Это должно работать для атрибута «флажок» (остальное, как ответил Стив):

checked={{ hobby in user.hobbies and "checked" or "" }}

UPDATE:

Я давно не использовал этот шаблонизатор. Я полагаю, это потому, что вы не можете использовать in, and, or внутри {{ }}.

Более уродливый обходной путь:

checked={% if hobby in user.hobbies %}"checked"{% else %}""{% endif %}

Надеюсь, это поможет.

1 голос
/ 30 августа 2011
{% for hobby in hobbies_list %}
  <input type="checkbox" {% if hobby in user.hobbies %}checked="yes"{% endif %} name = "{{hobby.name}}"/>{{hobby.name}}<br/>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...