我不能制作一个基于crud的搜索表单。为什么不工作?

时间:2015-07-27 11:29:04

标签: sql search crud web2py

我的代码:

模型/ db.py

....
dbmy = DAL('mysql://user:user@localhost/test',migrate_enabled=False)
dbmy.define_table('Firewall', Field('disabled','text'),
                            Field('src_port_first','integer'),
                            Field('src_port_last','integer'),
                            Field('port_first','integer'),
                            Field('port_last','integer'),
                            Field('type','text'),
                            Field('Src_op','text'),
                            Field('src_ipaddr_first','text'),
                            Field('src_ipaddr_last','text'),
                            Field('src_netmask','text'),
                            Field('Dst_op','text'),
                            Field('dst_ipaddr_first','text'),
                            Field('dst_ipaddr_last','text'),
                            Field('dst_netmask','text'),
                            Field('Action','text'))
dbmy.commit()

控制器/ select.py:

# -*- coding: utf-8 -*-
from gluon.tools import Crud
crud=Crud(dbmy)
def search():
    return dict(form=crud.search(dbmy.Firewall))

如果我尝试127.0.0.1:8000/[app]/select/search/Firewall网址,页面会写下:

  

无效视图(select / search.html)

1 个答案:

答案 0 :(得分:2)

当你的控制器动作返回一个字典时,web2y需要一个相关的视图文件 - 在这种情况下,它会查找/views/select/search.html。您必须创建该视图。

或者,您可以在这种情况下启用generic.html view。请注意,在脚手架应用程序中,所有通用视图仅针对本地请求启用,否则禁用(由于安全性问题)。

您还可以通过response.view指定其他视图。

最后,根据您的控制器代码,没有理由在您的URL中添加“防火墙”,因为search函数已经硬编码以搜索db.Firewall表(事实上,{ {1}}函数完全忽略URL中的“防火墙”。