如何解决webargs @use_kargs 验证不起作用
自从升级python版本和webargs包后,服务器的验证都在下降。他们应该得到的参数是空的。在没有验证的情况下运行是完美的。
webargs 的升级是从版本 5 到 6.1。 我确实检查了升级到 6.1 的文档,但我尝试的所有更改(例如添加“location='query'”)由于某种原因都不起作用。
app.route('/api/v1/corr/gene/<gene_id>',methods=['GET'])
@use_kwargs(genes_args,validate=[gene_must_be_unambiguous])
def query_by_gene(gene_id):
print('in the function')
from api.v1.service import generate_graph_by_gene
edges,nodes,params = generate_graph_by_gene(gene_id)
genes_args = {
'gene_id': fields.Str(location='view_args',required=True)
}
def gene_must_be_unambiguous(args):
models = 'api.v1.models'
print(args)
from importlib import import_module
names = getattr(import_module(models),'ChaperoneFamilyCompartments')
db = getattr(import_module(models),'ChaperoneCorrelationsV8')
gene = args['gene_id']
potential_genes = names.check_name(gene)
if len(potential_genes) > 1:
raise ValidationError(
'Ambiguous gene identifier {} matches the following: {}'.format(gene,potential_genes))
elif len(potential_genes) < 1:
raise ValidationError(
'No entry matches {} {} in our database.'.format(gene,potential_genes))
else:
node_filter = or_(db.Protein1.in_([gene]),db.Protein2.in_([gene]))
q = db.query.filter(node_filter).all()
if q is None:
raise ValidationError(
'No entry matches {} {} in our database.'.format(gene,potential_genes))
# Inject ENSG name to be passed instead of whatever the user filled in.
args['gene_id'] = potential_genes[0]
在 'gene_must_be_unambigous' 中,gene_id 始终为空。
这是我尝试进行更改之前的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。