2017-02-09 22 views
0

Прежде всего, я должен сказать, что я как бы новичок пользователя web2Py. У меня проблема, которая кажется легким решением, но все, что я пытаюсь, кажется, терпит неудачу. Я хочу нажать на изображение, и когда он его выбирает, он дает значение True в базе данных, а когда я «unclick» его, он дает значение False.Web2Py добавляет значения в базу данных при щелчке изображения

Я использую web2py в качестве основы, и у меня есть следующие базы данных:

db.define_table(
'interestFood', 
Field('Tacos', 'boolean', default=False), 
Field('Salad', 'boolean', default=False), 
Field('Cheeseburger', 'boolean', default=False), 
Field('Pizza', 'boolean', default=False), 
Field('Sushi', 'boolean', default=False), 
Field('Breakfast', 'boolean', default=False)) 

db.interestFood.id.writable = db.interestFood.id.readable = False

И у меня есть следующий контроллер:

def createProfile_interests(): 
if (db(db.interestFood.id==auth.user.id).count()!=1): 
    db.interestFood.insert(id=auth.user.id) 
interest1=db(db.interestFood.id==auth.user.id).select() 
print(interest1) 
return dict(interest1=interest1) 

А вот HTML фрагмент кода:

{{Tacos=False 
    Salad=False 
    Sushi=False 
    Cheeseburger=False 
    Pizza=False 
    Breakfast=False}} 
<input type="image" name = "food" id="0" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/taco.png" onclick=interests(0) onclick="{{interest1.update(Tacos=True)}}"> 
<input type="image" name = "food" id="1" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/pizza.png" onclick=interests(1) onclick="{{interest1.update(Pizza=True)}}"> 
<input type="image" name = "food" id="2" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/salad.png" onclick=interests(2) onclick="{{interest1.update(Salad=True)}}"><br><br> 
<input type="image" name = "food" id="3" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/burger.png" onclick=interests(3) onclick="{{interest1.update(Cheeseburger=True)}}"> 
<input type="image" name = "food" id="4" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/sushi.png" onclick=interests(4) onclick="{{interest1.update(Sushi=True)}}"> 
<input type="image" name = "food" id="5" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/breakfast.png" onclick=interests(5) onclick="{{interest1.update(Breakfast=True)}}"> 

Функция интересов() является ограничением, которое позволяет пользователю выбирать только два изображения.

Я пытался сделать что-то вроде этого:

<input type="image" name = "food" id="0" src="http://127.0.0.1:8000/WagMore/static/_2.14.6/images/taco.png" onclick=interests(0) onclick=" 
    {{ 
     if Tacos==False: 
     interest1.update(Tacos=True) 
     else: 
     interest1.update(Tacos=False) 
    }}"> 

Но это не работает. Я работаю над этим около двух дней. Любая идея о том, как это сделать? Я ценю это!

ответ

0

Прежде всего, вы не можете поместить два onclic атрибуты в одном элементе, вы можете сделать что-то вроде этого, вместо:

<input type="image" name = "food" id="0" onclick="function1();function2();"> 

Или еще лучше, вы можете use JQuery to bind the two functions.

Теперь в вашем примере вы смешиваете клиентский и серверный код, они выполняются совершенно по-другому (и времени), поэтому код внутри {{}} обрабатывается на стороне сервера, и это будет выполняется всегда, а не тогда, когда пользователь вставляет вход. Вы должны прочитать некоторые документы о том, как работает веб-сайт, и как работает клиентский и серверный код, this - это базовое объяснение. вы также можете прочитать web2py book, чтобы узнать, как работает web2py.