0

我正在使用 web.py 框架来创建一个简单的 Web 应用程序

我想创建一个单选按钮,所以我编写了以下代码

from web import form
from web.contrib.auth import DBAuth
import MySQLdb as mdb



render = web.template.render('templates/')

urls = (
  '/project_details',  'Project_Details',  
)

class Project_Details:

    project_details = form.Form( 
        form.Radio('Home Page'),
        form.Radio('Content'),
        form.Radio('Contact Us'),
        form.Radio('Sitemap'),
        )

    def GET(self):
        project_details = self.project_details()
        return render.projectdetails(project_details)  

当我使用 url 运行代码时,localhost:8080我看到以下错误

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/web/application.py", line 237, in process
    return p(lambda: process(processors))
  File "/usr/lib/python2.7/site-packages/web/application.py", line 565, in processor
    h()
  File "/usr/lib/python2.7/site-packages/web/application.py", line 661, in __call__
    self.check(mod)
  File "/usr/lib/python2.7/site-packages/web/application.py", line 680, in check
    reload(mod)
  File "/home/local/user/python_webcode/index.py", line 68, in <module>
    class Project_Details:
  File "/home/local/user/python_webcode/index.py", line 72, in Project_Details
    form.Radio('password'),
TypeError: __init__() takes at least 3 arguments (2 given)

需要在单选按钮中传递什么参数才能避免这个错误

4

2 回答 2

1

查看源代码,您似乎必须Radio为所有项目使用一个构造函数,因为同一个Radio对象实际上会生成多个<input>元素。

尝试类似::

project_details = form.Form( 
    form.Radio('details', ['Home Page', 'Content', 'Contact Us', 'Sitemap']),
    )
于 2012-10-10T11:58:41.757 回答
0

这是我能够破译的。checked='checked' 似乎在列表中选择了一个随机(最后一个?)项目。如果没有默认选择,如果没有选择任何单选按钮,我的测试将返回 NoneType。

project_details = form.Form(
  form.Radio('selections', ['Home Page', 'Content', 'Contact Us','Sitemap'], checked='checked'),
  form.Button("Submit") 
)

要将您的用户选择作为字符串访问...

result = project_details['selections'].value

如果您想在模板处于活动状态时使用 javascript,您可以将 onchange='myFunction()' 添加到 Radio 行项目的末尾。我还为每个元素分配了一个 id,以避免对我的 getElementById 调用感到沮丧,所以我的声明看起来像这样。

 project_details = form.Form(
   form.Radio('selections', ['Home Page', 'Content', 'Contact Us','Sitemap'], checked='checked', onchange='myFunction()', id='selections'),
   form.Button("Submit") 
)
于 2019-02-18T08:51:32.477 回答