代码:::
from bottle import route, request, response, template,run
import petl as etl
@route('/loc')
def abc():
response.headers['Access-Control-Allow-Origin']='*'
response.headers['Content-type']='application/json'
post = request.query.postcode
locationTable = etl.fromcsv('clinic_locations.csv')
abcd = etl.search(locationTable, 'Postcode', post)
return template('{{postcode}}',postcode=abcd)
这是csv文件,我想在json中得到结果但是我不知道该怎么做我得到它因为我是petl和瓶子框架的新手 当用户在浏览器上输入网址时,例如“localhost:8080 / loc?postcode = 4700”,它将返回有关该邮政编码的数据但是采用csv格式,但我希望以json格式获取输出,以便我可以使用此数据在地图上找到地址 任何人都可以帮助我获得结果
示例:运行localhost by bottle framework后,我在浏览器上的所需输出是:
答案 0 :(得分:2)
将表格转换为JSON,需要您使用json
模块。这是通过在petl
模块源中查看而创建的。
from bottle import route, request, response, template,run
import petl as etl
import json
@route('/loc')
def abc():
response.headers['Access-Control-Allow-Origin']='*'
response.headers['Content-type']='application/json'
post = request.query.postcode
locationTable = etl.fromcsv('clinic_locations.csv')
abcd = etl.search(locationTable, 'Postcode', post)
abcd = json.JSONEncoder().encode(list(etl.dicts(abcd))) #Here's where the magic happens.
return abcd
如果您最终使用此答案,请确保您的数据库已过滤掉所有<script>
标记,否则恶意用户可能会将JavaScript插入您的数据库并使您的API端点运行任意JavaScript(也称为XSS攻击)。
答案 1 :(得分:1)
所以有两件事,你应该使用json.dumps作为输出。并且瓶子总是会逃脱输出以使其安全。要绕过这个,您应该加载一个调用变量的模板。然后在模板内部访问变量,如下所示: {{!变量名}}
!!如果数据与用户输入相关,则这非常危险,因为它们可以轻松地将可运行的代码插入到页面中。请谨慎使用!!