cherrypywebform:复选框在未选中时产生错误

2024-05-28 22:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python3.5中使用CherryPy生成一个简单的web表单(与sqlite3数据库进行比较),它接受一些不同类型数据的输入。如果不勾选复选框,则会产生一个错误,因为(我假设)没有默认的空值;它要么是“on”,要么是不存在的。如何更改窗体,使其自动将空框设置为“无”? 以下是代码(部分):

class startScreen(object):
    @cherrypy.expose
    def index(self):
        return """<form method="post" action="search">
        Job Title:<br>
        <input type="text" name="title"><br>
        Employer name:<br>
        <input type="text" name="employer"><br>
        Minimum Starting Salary:<br>
        <input type="number" name="minsal"><br>
        Contract Hours Per Week:<br>
        <input type="number" name="hpwMin">
        <input type="number" name="hpwMax"><br>
        Start Date:<br>
        <input type="date" name="startDate"><br>
        <!--jobtype drop down menu--!>
        Contract Length (months):<br>
        <input type="number" name="CLMin">
        <input type="number" name="CLMax"><br>
        <!--qualifications list--!>
        <!--key skills list--!>
        Training Offered:<br>
        <input type="checkbox" name="training"><br>
        Expenses covered:<br>
        <input type="checkbox" name="expenses"><br>
        Job benefits:<br>
        <input type="checkbox" name="benefits"><br>
        Number of days annual holiday: <br>
        <input type="number" name="holiday"><br>
        Opportunities abroad:<br>
        <input type="checkbox" name="abroad"><br>
        Date posted: <br>
        <input type="date" name="datePosted"><br>


        <button type="submit">Submit</button>
        </form>

        """
    @cherrypy.expose #needed for every page
    def search(self, title, employer, minsal, hpwMin, hpwMax, startDate, CLMin, CLMax, training, expenses, benefits, holiday, abroad, datePosted):
        search.search.searchDBS(title, employer, minsal, hpwMin, hpwMax, startDate, CLMin, CLMax, training, expenses, benefits, holiday, abroad, datePosted)
        return "done"

这是取消选中“单选框”时网页上的输出:

^{pr2}$

Tags: namebrnumberinputsearchtitletypeholiday
1条回答
网友
1楼 · 发布于 2024-05-28 22:40:57

这是html复选框的常规行为,您可以使用默认参数:training=None或使用kwargs并查找键。

对于第一个选项,您的expose方法是:

@cherrypy.expose #needed for every page
def search(self, title, employer, minsal, hpwMin, hpwMax,
           startDate,  CLMin, CLMax, expenses,
           benefits, holiday, abroad, datePosted, training=None):
    # "training" will be None, if the checkbox is not set
    # you can verify with something like:
    # if training is None:
    #    ...
    search.search.searchDBS(
       title, employer, minsal, hpwMin, hpwMax,
       startDate, CLMin, CLMax, training, expenses,
       benefits, holiday, abroad, datePosted)
    return "done"

另一个替代方法(从我的角度来看,因为这些参数对于一个方法来说有很多参数,所以您可以使用**params替代方法:

^{pr2}$

相关问题 更多 >

    热门问题