функция фляги для запроса списков от etsy api и отображения результатов на веб-странице - PullRequest
0 голосов
/ 14 октября 2018

Привет! Я пытаюсь создать приложение-флягу для доступа к различным веб-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

Я следую и адаптирую этот урок здесь для создания блога, и я нашелнекоторый etsy код здесь .Код выглядит очень хорошо, но я не знаю, как включить его в мое приложение!Копировать ли этот код в файл etsy.py в папке приложения, затем вызвать его в файле erdm / rout.py, и если да, то как?На файле readme сайта git написано:для вызова списков

e.show_listings (color = '# FF00FF')

Итак, как мне сделать функцию этого?Если нет, я объединяю каждую функцию в файле etsy отдельно в файле rout.py как отдельный маршрут (что я и предпочитаю).Это приводит к моей второй проблеме: как мне нажать кнопку на веб-странице для вызова функции? Как отобразить результаты в таблице?Я использую колбу?Я пытался создать свой собственный код для запроса информации, но столкнулся с проблемой теста, хотя мой код работал здесь - это мой код, а вот код, который получает ответ

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 голосов
/ 21 октября 2018

Это для тех, кто, как я, находит даже самые простые вещи в python действительно трудными.Мой код, чтобы найти список объявлений в моем магазине Etsy и вернуть только несколько частей этого списка, изначально был тремя файлами для моего приложения фляги, которые я сжал 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 Сообщения об ошибках.Один маленький шаг для новичка, но огромный скачок в моих знаниях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...