Web2在单击图像时将值附加到数据库

时间:2017-02-09 23:21:51

标签: javascript python html web2py

首先,我应该说我是一个新手web2Py用户。我遇到的问题似乎很容易解决,但我尝试的一切似乎都失败了。我想点击一个图像,当它选择它时,它在数据库中给它一个值为True,当我" unlick"它,它给出一个值False。

我使用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)}}">

interest()函数是一种约束,只允许用户选择两个图像。

我尝试过这样的事情:

<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)
    }}">

但这不起作用。我已经为此工作了大约两天了。知道怎么解决这个问题吗?我很感激!

1 个答案:

答案 0 :(得分:0)

首先,你不能在一个元素中放置两个onclic属性,你可以这样做:

from scipy import integrate
from matplotlib import pyplot as plt

MOm = 1.0
MOv = 0.0

COm = 0.3
COv = 0.7

z = np.arange(0.0,10,0.1)
H0 = 70
Om = (1.0,0.3)
Ov = (0.0,0.7)

fig = plt.figure(1)
for param1,param2 in zip(Om,Ov):
    def f(z):
        A = (5/2)*param1*(H0**2)
        H = H0 * np.sqrt( param1*((1+z)**3) + param2 )
        return A * ((1+z)/(H**3))

    def F(z):
        res = np.zeros_like(z)
        for i,val in enumerate(z):
            y,err = integrate.quad(f,val,np.inf)
            res[i] = y
        return res

    def D(z):
        return (H0 * np.sqrt( param1*((1+z)**3) + param2 )) * F(z)

## Now define labels as you need and labels as follows:

    plt.plot(z,D(z),label = 'Om: {}, Ov: {}'.format(param1,param2))
    plt.legend()

甚至更好,你可以use JQuery to bind the two functions

现在,在您的示例中,您正在混合客户端和服务器端代码,它们以完全不同的方式(和时间)执行,因此,{{}}中的代码在服务器端处理,并且将被执行总是,不是当用户cliks输入时。您应该阅读一些关于Web如何工作的文档,以及客户端和服务器端代码的工作原理,this是一个基本的探索。您还可以阅读web2py book以了解web2py的工作原理。