嗨,我正在尝试创建一个flask应用程序来访问各种Web API,并在不同页面上显示信息,并将数据导入到我的数据库中,我已经从事此工作了几个月了,我对python还是陌生的对我来说很简单,我正在使用烧瓶蓝图,这是我的应用程序架构:
etsy_api/
|_ config.
|_ etsy_api.py
|_ db
|_ app/
|_ models.py
| __init__.py "flask function factory with each bp registered"
|_ auth/
|___init__.py "registers blueprint"
|_ forms.py "flask wtforms "class"
|_ routes.py
|_ erdm/
|___init__.py "registers blueprint"
|_ forms.py "flask wtforms "class"
|_ routes.py
|_templates/
|_ base.html
|_ auth/ "templates for auth"
|_ erdm/
|_ Listings.html
我正在跟踪本教程here并将其改编为博客创建工具,并且发现了一些时髦的代码here。该代码看起来非常好,但是我不知道如何将其整合到我的应用程序中! 我是否将此代码复制到app文件夹中的etsy.py文件中,然后在erdm / routes.py文件中调用它,如果可以,怎么办?在git网站自述文件中说:呼叫商家信息
e.show_listings(color ='#FF00FF')
那么我该如何发挥作用呢?如果没有,我将etsy文件中的每个函数分别作为单独的路由合并到route.py文件中(这是我所希望的)。这导致了我的第二个问题,我该如何在网页上单击一个按钮来调用该函数,如何在表格中显示结果?我会使用flaskform吗?我尝试创建自己的代码来请求信息,但是即使我的代码有效here是我的代码,但这也是获得响应的代码
,但我在测试中遇到了问题from __future__ import print_function
from etsywrapper import Listings
active = Listings.active()
for number, show in enumerate(active['results'], start=1):
print("{num}. {listing_id} - {title}".format(num=number,
listing_id=show['listing_id'], title=show['title']))
此代码将打印出我想要的结果,但我知道如何将其合并到我的应用程序中!
我希望有人了解我的问题可以帮助指导我 问候 保罗
答案 0 :(得分:0)
这适用于像我这样的人,他们甚至发现python中最简单的东西也非常困难。 我在Etsy商店中查找列表清单并仅返回该列表的一部分的代码,最初是将我的flask应用程序的三个文件压缩为 init .py和__core.py,合并为一个文件__core。 py。
import os
import requests
ERDM_API_KEY = os.environ.get('ERDM_API_KEY', None)
class Listings(object):
def __init__(self, id):
self.id = id
def info(self):
path = 'https://openapi.etsy.com/v2/listings/{}/inventory'.format(self.id)
response = session.get(path)
return response.json()
@staticmethod
def active():
path = 'https://openapi.etsy.com/v2/shops/ERDMHardware/listings/active'
response = session.get(path)
return response.json()
class APIKeyMissingError(Exception):
pass
if ERDM_API_KEY is None:
raise APIKeyMissingError(
"All methods require an API key. "
)
session = requests.Session()
session.params = {}
session.params['api_key'] = ERDM_API_KEY
然后是我真正不理解的真正困难的部分,那就是如何编写一个函数向Etsy API服务器发送请求,我有一些代码
from __future__ import print_function
from etsywrapper.__core import Listings
active = Listings.active()
for number, show in enumerate(active['results'], start=1):
print("{num}. {listing_id} - {title}".format(num=number,
listing_id=show['list
可以,但是我需要一个视图函数,所以在抓了很多头之后就到了
from app.etsy.__core import Listings
@bp.route('/listings')
def listings():
active = Listings.active()
for number, show in enumerate(active['results'], start=1):
return("{num}. {listing_id} - {title}".format(num=number,
listing_id=show['listing_id'],
title=show['title']))
我知道它需要“ def'name'()”,然后需要一些代码!但是这个名字重要吗?以及什么代码? 现在我知道,任何与有效的函数和代码相关的名称, 我不得不将“打印”更改为“返回”,但是现在我在网页和NNNNNNNNNo错误消息中有了一些信息。 对于菜鸟来说,只有一步之遥,但我的知识却有了飞跃