gpt4 book ai didi

python - 接受 POST 和 GET 的搜索屏幕

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:56 25 4
gpt4 key购买 nike

假设我是 web2py 的新手。

我在 Controller 中有此功能来搜索公司的条目。目标是在数据库中搜索表单中的三个参数,但我希望该函数也通过 GET 接受参数:

@auth.requires_login()
def index():
from datetime import datetime

data['subtitle'] = 'My Screen'

form = SQLFORM.factory(
Field('company',
type="reference company",
label='Company',
widget=SQLFORM.widgets.options.widget,
requires=IS_IN_DB(mongodb, mongodb.company.id, '%(name)s')
),
Field('initial_date',
label='Initial Date',
type="date",
requires=IS_NULL_OR(IS_DATE(format='%d/%m/%Y'))
),
Field('final_date',
label='Final Date',
type="date",
requires=IS_NULL_OR(IS_DATE(format='%d/%m/%Y'))
)
)

if str(request.env.request_method) == 'POST':
print request.post_vars
if form.accepts(request.post_vars, keepvalues = True):

params = {}
if form.vars.company is not None:
params['company'] = form.vars.company
if form.vars.initial_date is not None:
params['initial_date'] = form.vars.initial_date
if form.vars.final_date is not None:
params['final_date'] = form.vars.final_date

print 'Params: '
print params

redirect(URL('index', vars=params))

else:
for f in form.errors:
print f + ': ' + form.errors[f]

lista = {}
else:
query = None
if request.get_vars.company is not None:
query = mongodb.entry.company == request.get_vars.company
if request.get_vars.initial_date is not None:
query &= mongodb.entry.date >= datetime.strptime(request.get_vars.initial_date, '%Y-%m-%d')
if request.get_vars.final_date is not None:
query &= mongodb.entry.date <= datetime.strptime(request.get_vars.final_date, '%Y-%m-%d')

print 'Query: '
print query
if query is not None:
list = mongodb(query).select()
else:
list = {}

data['form'] = form
data['list'] = list

return dict(data=data)

只有我提供公司才能完美工作。如果我在日期之间搜索,即使日期在数据库中具有匹配项,它也不会显示任何结果。

Web2py 缺乏好的例子。有人可以帮忙吗?

最佳答案

与其使用 POST 表单,然后通过 GET 请求重定向到相同的操作,为什么不直接通过 GET 提交表单:

form = SQLFORM.factory(..., _method='get')

关于您的查询,当 queryNone 开头时,query &= 将不起作用。

关于python - 接受 POST 和 GET 的搜索屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com