flask功能从etsy api请求列表并在网页上显示结果

时间:2018-10-14 10:00:35

标签: python function flask

嗨,我正在尝试创建一个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']))

此代码将打印出我想要的结果,但我知道如何将其合并到我的应用程序中!

我希望有人了解我的问题可以帮助指导我 问候 保罗

1 个答案:

答案 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错误消息中有了一些信息。 对于菜鸟来说,只有一步之遥,但我的知识却有了飞跃