首先,我应该说我是一个新手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)
}}">
但这不起作用。我已经为此工作了大约两天了。知道怎么解决这个问题吗?我很感激!
答案 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的工作原理。