request.args.getlist() returns [] if missing, refs #774

Also added some unit tests for request.args
This commit is contained in:
Simon Willison 2020-05-29 15:51:30 -07:00
commit 84616a2364
4 changed files with 14 additions and 4 deletions

View file

@ -26,7 +26,7 @@ async def render_test_all_parameters(
datasette, columns, rows, sql, query_name, database, table, request, view_name, data
):
headers = {}
for custom_header in request.args.getlist("header") or []:
for custom_header in request.args.getlist("header"):
key, value = custom_header.split(":")
headers[key] = value
result = await datasette.databases["fixtures"].execute("select 1 + 1")

View file

@ -448,6 +448,16 @@ async def test_request_post_vars():
assert {"foo": "bar", "baz": "1"} == await request.post_vars()
def test_request_args():
request = Request.fake("/foo?multi=1&multi=2&single=3")
assert "1" == request.args.get("multi")
assert "3" == request.args.get("single")
assert ["1", "2"] == request.args.getlist("multi")
assert [] == request.args.getlist("missing")
with pytest.raises(KeyError):
request.args["missing"]
def test_call_with_supported_arguments():
def foo(a, b):
return "{}+{}".format(a, b)